Commit Graph

14090 Commits

Author SHA1 Message Date
mtklein
46616af01b Strip old backend recording down to essentials
Feature-wise, this removes:
  1) BBH support;
  2) peephole optimizations;
  3) record-time text op specializations;
  4) the guarantee that SkPaints are flattened.

This deletes the optimizations GM, which only exists to test the peepholes of
the old backend.  SkRecord optimizations are unit tested, and if that ever fails we
can think about adding another GM like this, but they're different enough we'd
want to start from scratch anyway.

We need to keep the code that plays back the specialized text ops around for
a while for compatibility with existing .SKPs that have those ops recorded.

BUG=skia:

CQ_EXTRA_TRYBOTS=tryserver.skia:Canary-Chrome-Ubuntu13.10-Ninja-x86_64-ToT-Trybot
R=robertphillips@google.com, reed@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/617953002
2014-09-30 14:47:10 -07:00
bsalomon
afbf2d6273 Make "priv" classes for GrTexure and GrSurface.
R=robertphillips@google.com, egdaniel@google.com, joshualitt@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/596053002
2014-09-30 12:18:44 -07:00
mtklein
8de02f4bf3 Clean up SK_PICTURE_USE_SK_RECORD and SK_PICTURE_OPTIMIZE_SK_RECORD.
This folds the code through as if they were defined, which is the explicit
state in both our build and Chrome's.

This leaves the EXPERIMENTAL_ and DEPRECATED_ hooks in to be cleaned up or
privatized later.

CQ_EXTRA_TRYBOTS=tryserver.skia:Canary-Chrome-Ubuntu13.10-Ninja-x86_64-ToT-Trybot

BUG=skia:
R=reed@google.com, robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/616033002
2014-09-30 11:43:53 -07:00
robertphillips
b5a97154f8 Allow previously-hoisted layers to be reused in the same draw
In the Sierpinkski test case there are only a few layers appear in the "to be drawn" lists but they those layers get reused a lot of times with different transforms. This CL adds an additional category to allow such layers to be placed in the GrReplacements object without needing to be rendered.

This is split out of (Fix sub-picture layer rendering bugs - https://codereview.chromium.org/597293002/)

BUG=skia:2315
R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/616023002
2014-09-30 11:33:02 -07:00
mtklein
5bc760a6a6 Remove support for SkPicture::clone().
This folds SK_SUPPORT_LEGACY_PICTURE_CLONE through as undefined.

Chrome's not used clone() for a month or two, and we don't use it ourselves.
Don't think Android ever did.

CQ_EXTRA_TRYBOTS=tryserver.skia:Canary-Chrome-Ubuntu13.10-Ninja-x86_64-ToT-Trybot

BUG=skia:
R=reed@google.com, mtklein@google.com, robertphillips@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/620533002
2014-09-30 11:14:38 -07:00
reed
7874dc8e71 remove obsolete code for SK_SUPPORT_LEGACY_IMAGEGENERATORAPI
BUG=skia:
R=reed@google.com

Author: reed@chromium.org

Review URL: https://codereview.chromium.org/613933002
2014-09-30 10:15:32 -07:00
tfarina
fffa16cc27 webtry: Only create sqlite3 tables if they don't exist yet.
Otherwise it will through an error like the following:

2014/09/28 21:22:24 Info: status creating sqlite table for sources:
"table source_images already exists"
2014/09/28 21:22:24 Info: status creating sqlite table for webtry:
"table webtry already exists"
2014/09/28 21:22:24 Info: status creating sqlite table for workspace:
"table workspace already exists"
2014/09/28 21:22:24 Info: status creating sqlite table for workspace
try: "table workspacetry already exists"

To test locally the following was done:

$ ./gyp_skia gyp/webtry.gyp gyp/most.gyp -Dskia_gpu=0
$ ninja -C out/Debug webtry
$ cd experimental/webtry
$ go get -d
$ go build webtry.go
$ ./webtry
$ google-chrome http://localhost:8000

Expected: see no more the above messages.

BUG=None
TEST=see above
R=stephana@google.com, jcgregorio@google.com

Author: tfarina@chromium.org

Review URL: https://codereview.chromium.org/613593002
2014-09-30 08:17:11 -07:00
mtklein
1b466f7e21 Archive SkFloat
https://crrev.com/610153002/ reminded me that it existed, but it's entirely
unused and made moot by hardware FP.  Might as well trim a few K off libskia.

BUG=skia:
R=reed@google.com, mtklein@google.com, tfarina@chromium.org

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/619563003
2014-09-30 08:08:59 -07:00
reed
e8db3ef2a2 specialize setConcat for scale+translate, helps drawText perf
BUG=skia:
R=jvanverth@google.com

Author: reed@google.com

Review URL: https://codereview.chromium.org/620433002
2014-09-30 07:24:47 -07:00
robertphillips
b06e5a2f55 Revert of Make "priv" classes for GrTexure and GrSurface. (patchset #9 id:260001 of https://codereview.chromium.org/596053002/)
Reason for revert:
Breaking the Chrome builds with:

 lib/libcc.so: error: undefined reference to 'GrAutoScratchTexture::detach()'

(http://108.170.220.120:10117/builders/Canary-Chrome-Ubuntu13.10-Ninja-x86_64-DRT/builds/2990/steps/Retry_BuildContentShell_1/logs/stdio)

Original issue's description:
> Make "priv" classes for GrTexure and GrSurface.

R=egdaniel@google.com, joshualitt@google.com, bsalomon@google.com
TBR=bsalomon@google.com, egdaniel@google.com, joshualitt@google.com
NOTREECHECKS=true
NOTRY=true

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/618733002
2014-09-30 06:58:20 -07:00
robertphillips
dbe6074a06 Revert of GrResourceCache2 manages scratch texture. (patchset #14 id:260001 of https://codereview.chromium.org/608883003/)
Reason for revert:
Turning bots red:
Nanobench seems to be uniformly failing on Android
(http://108.170.220.21:10117/builders/Perf-Android-Venue8-PowerVR-x86-Release/builds/99/steps/RunNanobench/logs/stdio)

Ubuntu GTX660 32bit is failing in both Debug and Release on GM generation (it appears to be out of memory) (http://108.170.220.120:10117/builders/Test-Ubuntu12-ShuttleA-GTX660-x86-Debug/builds/2457/steps/GenerateGMs/logs/stdio)

Original issue's description:
> GrResourceCache2 manages scratch texture.
>
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/3d398c876440deaab39bbf2a9b881c337e6dc8d4

R=bsalomon@google.com
TBR=bsalomon@google.com
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/611383003
2014-09-30 06:54:17 -07:00
bsalomon
3d398c8764 GrResourceCache2 manages scratch texture.
BUG=skia:
R=robertphillips@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/608883003
2014-09-30 06:02:23 -07:00
bsalomon
c0eb9b9818 Make "priv" classes for GrTexure and GrSurface.
R=robertphillips@google.com, egdaniel@google.com, joshualitt@google.com, joshualitt@chromium.org

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/596053002
2014-09-29 14:20:11 -07:00
reed
c5e15a1afa remove alphatype from colortable
the owning bitmap is (already) responsible for knowing the alphatype

BUG=skia:
R=djsollen@google.com

Author: reed@google.com

Review URL: https://codereview.chromium.org/611093002
2014-09-29 12:10:27 -07:00
humper
4572ae9221 allow caller to override the default output directory for gyp
BUG=skia:
R=jcgregorio@google.com

Author: humper@google.com

Review URL: https://codereview.chromium.org/614753002
2014-09-29 11:42:25 -07:00
robertphillips
ed42059d2f Move offset and CTM from LayerCache Key to per-hoisted-layer info
This CL reduces the amount of information used in the layer cache key:
- the stop value isn't needed since the start value uniquely identifies the layer in the picture.
- only the upper-left 2x2 portion of the CTM should be used as a key for looking up cached layers.
- individual layers can be redraw in different locations so the final offset cannot be a part of the key.

Since this data is no longer stored in the cached layer, but is still required to draw the cached layer, it is now stored in the per-layer information (i.e., HoistedLayer).

This is split out of (Fix sub-picture layer rendering bugs - https://codereview.chromium.org/597293002/).

BUG=skia:2315
R=egdaniel@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/609403003
2014-09-29 11:39:38 -07:00
robertphillips
92f7fc4868 Rebaselining Win7 image failures (textblob, verttext2)
Rebaselining these for now and see if they recur.

R=borenet@google.com
TBR=borenet@google.com

BUG=skia:2956

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/600533003
2014-09-29 11:17:58 -07:00
bsalomon
656f2cd558 Make writeRenderTargetPixels use draw buffer rather than GrGpu
R=robertphillips@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/586393005
2014-09-29 11:01:59 -07:00
tfarina
320a4e658b Fix some references to non-existant polyfill directory.
Looks like the name of the directory is "poly" rather than "polyfill".

BUG=None
TEST=None
R=humper@google.com, jcgregorio@google.com

Author: tfarina@chromium.org

Review URL: https://codereview.chromium.org/610003003
2014-09-29 10:50:59 -07:00
tfarina
c425ae3a12 Mention 'go get' command in the README file.
This is necessary to build webtry.go as it imports packages from
github.com

BUG=None
TEST=follow the README instructions
R=humper@google.com, jcgregorio@google.com

Author: tfarina@chromium.org

Review URL: https://codereview.chromium.org/601033004
2014-09-29 10:50:29 -07:00
junov
2bb52102b1 Applying post-commit comments from https://codereview.chromium.org/607993002/
BUG=skia:
R=robertphillips@google.com

Author: junov@chromium.org

Review URL: https://codereview.chromium.org/612063003
2014-09-29 10:19:00 -07:00
djsollen
47c548a670 Temp fix for crash when generating 16-bit cache for colorTables.
BUG=skia:2795
R=reed@google.com

Author: djsollen@google.com

Review URL: https://codereview.chromium.org/617443002
2014-09-29 08:57:50 -07:00
piotaixr
b7bac3d015 Override drawImage*() in SkNWayCanvas
BUG=skia:2947
R=junov@chromium.org, reed@google.com, bsalomon@chromium.org

Author: piotaixr@chromium.org

Review URL: https://codereview.chromium.org/600643002
2014-09-29 08:56:19 -07:00
mtklein
a9ceaf5364 Don't test the old picture backend anymore.
This saves a bunch of CPU time in DM, and even better, lets us tear it down!

BUG=skia:
R=robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/612603002
2014-09-29 08:44:46 -07:00
tfarina
4ceb039301 webtry database has more than one table.
Fix the wording in the DESIGN doc. Currently it says "the only table" as
implying the database has just a single table.

That is not true, the webtry database has four tables: webtry,
workspace, workspacetry and source_images.

BUG=None
TEST=None
R=jcgregorio@google.com

Author: tfarina@chromium.org

Review URL: https://codereview.chromium.org/611763002
2014-09-29 08:16:12 -07:00
senorblanco
3a49520696 Sanitize SkMatrixConvolutionImageFilter creation params.
Apply the same memory limit in the Create() function that we do when
deserializing.

R=reed@google.com

Author: senorblanco@chromium.org

Review URL: https://codereview.chromium.org/610723002
2014-09-29 07:57:20 -07:00
humper
9f58dd047c run the webtry build script instead of using go build
BUG=skia:
R=jcgregorio@google.com

Author: humper@google.com

Review URL: https://codereview.chromium.org/601203002
2014-09-29 07:40:41 -07:00
caryclark
c06d9a7a7e fail on extremely large coincident curves
TBR=
BUG=418381

Author: caryclark@google.com

Review URL: https://codereview.chromium.org/607913007
2014-09-29 06:58:41 -07:00
fmalita
05c4a4322e Revert of Revert of Fix SkTextBlob offset semantics. (patchset #1 id:1 of https://codereview.chromium.org/609223003/)
Reason for revert:
Re-landing: Chromium-side fix to be landed with the roll (https://codereview.chromium.org/607853003/)

Original issue's description:
> Revert of Fix SkTextBlob offset semantics. (patchset #2 id:20001 of https://codereview.chromium.org/605533002/)
>
> Reason for revert:
> Breaking the Chrome builds with the error:
>
> [14:54:14.317833] ../../skia/ext/pixel_ref_utils.cc:221:16: error: 'drawPosText' marked 'override' but does not override any member functions
> [14:54:14.318022]   virtual void drawPosText(const SkDraw& draw,
> [14:54:14.318082]                ^
>
> Original issue's description:
> > Fix SkTextBlob offset semantics.
> >
> > Implement proper x/y drawTextBlob() handling by plumbing a
> > drawPosText() offset parameter (to act as an additional glyph pos
> > translation) throughout the device layer.
> >
> > The new offset superceeds the existing constY, with a minor semantic
> > tweak: whereas previous implementations were ignoring constY in 2D
> > positioning mode (scalarsPerGlyph == 2), now the offset is always
> > observed, in all positioning modes. We can do this because existing
> > drawPosText() clients always pass constY == 0 for full positioning mode.
> >
> > R=reed@google.com, jvanverth@google.com, robertphillips@google.com
> >
> > Committed: https://skia.googlesource.com/skia/+/c13bc571d3e61a43b87eb97f0719abd304cafaf2
>
> TBR=jvanverth@google.com,reed@google.com,bsalomon@google.com,fmalita@chromium.org
> NOTREECHECKS=true
> NOTRY=true
>
> Committed: https://skia.googlesource.com/skia/+/d46b8d2bab7cfba8458432248e1568ac377429e9

R=jvanverth@google.com, reed@google.com, bsalomon@google.com, robertphillips@google.com
TBR=bsalomon@google.com, jvanverth@google.com, reed@google.com, robertphillips@google.com
NOTREECHECKS=true
NOTRY=true

Author: fmalita@chromium.org

Review URL: https://codereview.chromium.org/607413003
2014-09-29 06:29:53 -07:00
robertphillips
ee6631ef90 Update RecordReplaceDrawTest to generate and pass pictures
This CL splits the unit test changes out of (Fix sub-picture layer rendering bugs - https://codereview.chromium.org/597293002/).

For various reasons GrRecordReplaceDraw now needs to take an SkPicture (rather than an SkRecord and a BBH).

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

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/608823002
2014-09-29 05:32:50 -07:00
mtklein
51936a3f07 Always force the bounds of the empty pathref.
Chrome's TSAN bots are seeing various races on the bounds of the empty
path ref, and it's a simple fix to just force them on creation.  In
fact, we used to do this for this very reason, but for some reason it
looks like I decided it wasn't necessary.  Maybe not, but it certainly
doesn't hurt, and it's nice to keep TSAN happy.

Reminder to self: merge this into M39 branch too.

BUG=418299
R=fmalita@chromium.org, robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/603503003
2014-09-29 05:27:59 -07:00
robertphillips
aa0c837667 Make pictures in multipicturedraw GM fit in 0,0..W,H range
Having the picture contents not actually reside in the 0,0..W,H range wrecks havoc with the layer hoisting. The hoisting works correctly but since the picture don't fulfill their contract the results look incorrect.

This CL just translates the picture's contents to the right so they are within the picture bound.

R=egdaniel@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/594363003
2014-09-29 05:07:39 -07:00
robertphillips
d46b8d2bab Revert of Fix SkTextBlob offset semantics. (patchset #2 id:20001 of https://codereview.chromium.org/605533002/)
Reason for revert:
Breaking the Chrome builds with the error:

[14:54:14.317833] ../../skia/ext/pixel_ref_utils.cc:221:16: error: 'drawPosText' marked 'override' but does not override any member functions
[14:54:14.318022]   virtual void drawPosText(const SkDraw& draw,
[14:54:14.318082]                ^

Original issue's description:
> Fix SkTextBlob offset semantics.
>
> Implement proper x/y drawTextBlob() handling by plumbing a
> drawPosText() offset parameter (to act as an additional glyph pos
> translation) throughout the device layer.
>
> The new offset superceeds the existing constY, with a minor semantic
> tweak: whereas previous implementations were ignoring constY in 2D
> positioning mode (scalarsPerGlyph == 2), now the offset is always
> observed, in all positioning modes. We can do this because existing
> drawPosText() clients always pass constY == 0 for full positioning mode.
>
> R=reed@google.com, jvanverth@google.com, robertphillips@google.com
>
> Committed: https://skia.googlesource.com/skia/+/c13bc571d3e61a43b87eb97f0719abd304cafaf2

R=jvanverth@google.com, reed@google.com, bsalomon@google.com, fmalita@chromium.org
TBR=bsalomon@google.com, fmalita@chromium.org, jvanverth@google.com, reed@google.com
NOTREECHECKS=true
NOTRY=true

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/609223003
2014-09-29 04:48:52 -07:00
Justin Novosad
cce6bbf494 Adding test suppression for image-surface GM
Test needs to be rebaselined on gpu

TBR=bsalomon

Review URL: https://codereview.chromium.org/602203006
2014-09-26 17:41:28 -04:00
junov
96c118edff Change GrContext::copyTexture to go through GrDrawTarget
BUG=crbug.com/415100
R=bsalomon@google.com, robertphillips@google.com

Author: junov@chromium.org

Review URL: https://codereview.chromium.org/607993002
2014-09-26 13:09:47 -07:00
tomhudson
faccb8eb53 SkMatrix44::preserves2dAxisAlignment()
Convenience function requested for Chrome compositor that may have a performance
advantage.

BUG=skia:1017
R=reed@google.com, danakj@chromium.org, vollick@chromium.org

Author: tomhudson@google.com

Review URL: https://codereview.chromium.org/508303005
2014-09-26 11:45:48 -07:00
piotaixr
5ceff913cf Rename SkImage::draw(_, SkRect, SkRect) in SkImage::drawRect()
BUG=skia:2947
R=reed@google.com, junov@chromium.org

Author: piotaixr@chromium.org

Review URL: https://codereview.chromium.org/605843002
2014-09-26 07:36:26 -07:00
Florin Malita
c13bc571d3 Fix SkTextBlob offset semantics.
Implement proper x/y drawTextBlob() handling by plumbing a
drawPosText() offset parameter (to act as an additional glyph pos
translation) throughout the device layer.

The new offset superceeds the existing constY, with a minor semantic
tweak: whereas previous implementations were ignoring constY in 2D
positioning mode (scalarsPerGlyph == 2), now the offset is always
observed, in all positioning modes. We can do this because existing
drawPosText() clients always pass constY == 0 for full positioning mode.

R=reed@google.com, jvanverth@google.com, robertphillips@google.com

Review URL: https://codereview.chromium.org/605533002
2014-09-26 10:33:37 -04:00
piotaixr
2cce421bdf Replace a forgotten call to SkImage::draw() by SkCanvas::drawImageRect()
BUG=skia:2947
R=reed@google.com, junov@chromium.org

Author: piotaixr@chromium.org

Review URL: https://codereview.chromium.org/599203007
2014-09-26 07:10:38 -07:00
egdaniel
89af44a0f1 Split GrDrawState and GrOptDrawState into separate classes and remove base class.
Besides splitting the two classes, there are no logical changes here and mostly moving code around.

BUG=skia:
R=bsalomon@google.com

Author: egdaniel@google.com

Review URL: https://codereview.chromium.org/597323002
2014-09-26 06:15:04 -07:00
tfarina
fbe8d890ce Reinitialize monit to changes take effect.
Otherwise changes made to the configuration won't take effect when they
are synced.

BUG=None
TEST=None
R=jcgregorio@google.com

Author: tfarina@chromium.org

Review URL: https://codereview.chromium.org/602293002
2014-09-26 06:10:00 -07:00
borenet
8fb7b79de8 Update SKP version to 112
Automatic commit by the RecreateSKPs bot.

TBR=

Author: borenet@google.com

Review URL: https://codereview.chromium.org/604983003
2014-09-25 21:25:26 -07:00
senorblanco
91c395af69 Fix SkTableColorFilter deserialization validation.
Broken in https://skia.googlesource.com/skia/+/9fa60daad4d5f54c0dbe3dbcc7608a8f6d721187.

R=reed@google.com
TBR=reed@google.com

BUG=skia:

Author: senorblanco@chromium.org

Review URL: https://codereview.chromium.org/604873004
2014-09-25 15:51:35 -07:00
piotaixr
d52893cfc8 Add doc on SkCanvas::drawImage*() methods
BUG=skia:2947
R=junov@chromium.org, reed@google.com

Author: piotaixr@chromium.org

Review URL: https://codereview.chromium.org/595043002
2014-09-25 14:39:40 -07:00
piotaixr
90a36e5feb Make SkImage::draw() private
BUG=skia:2947
R=junov@chromium.org, reed@google.com, bsalomon@chromium.org

Author: piotaixr@chromium.org

Review URL: https://codereview.chromium.org/608623002
2014-09-25 14:30:57 -07:00
Mike Klein
587c5a2b89 Seems that some of our compliers can't infer this type, though most can.
BUG=skia:

Review URL: https://codereview.chromium.org/603263002
2014-09-25 15:07:55 -04:00
mtklein
610a015fda Remove SkPaint dirty bits.
fDirtyBits is only used by SkPaint::FlatteningTraits, which in turn was
only used as a smaller, faster format to flatten paints in-memory to dedup
them in the old picture backend.

SkRecord obsoleted all this.  Neither flatten()/unflatten() (disk format)
nor FlatteningTraits is used anywhere performance or size matters.

Here I revert the deduping code back to using the disk format for flattened paints.
We stil do have to flatten and unflatten paints while coverting from SkRecord
backend to the old backend, so we can't just delete this all yet, but any
faithful round trip flatten()/unflatten() pair will be fine, however slow.

NOTRY=true

BUG=skia:
R=reed@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/604813003
2014-09-25 11:57:53 -07:00
piotaixr
b5fae93d72 SkCanvas::drawImage is the new way for drawing a SkImage to a Canvas
BUG=skia:2947

Committed: https://skia.googlesource.com/skia/+/432789972c1e1f8a66165c75a250dba1853efa08

R=junov@chromium.org, reed@google.com, bsalomon@google.com

Author: piotaixr@chromium.org

Review URL: https://codereview.chromium.org/583453002
2014-09-24 13:03:30 -07:00
senorblanco
0f7197bc0d Fix SkXfermode deserialization.
Validation was failing due to an inverted test condition.

BUG=417266
R=reed@google.com

Author: senorblanco@chromium.org

Review URL: https://codereview.chromium.org/596333002
2014-09-24 11:09:38 -07:00
bungeman
7b09aab713 Correct glyph with non-bmp from typeface on Mac.
CTFontGetGlyphsForChars puts the glyph id at the index of the lead
surrogate as is documented in comments, but the code is looking at
the index of the trail surrogate.

BUG=skia:2960
R=mtklein@google.com

Author: bungeman@google.com

Review URL: https://codereview.chromium.org/596413002
2014-09-24 11:04:41 -07:00