Commit Graph

2611 Commits

Author SHA1 Message Date
joshualitt
25d9c15408 Pass Rendertarget into context.
Adding Jim for text context stuff, and Steven for image blur stuff.

BUG=skia:

Review URL: https://codereview.chromium.org/939623005
2015-02-18 12:29:52 -08:00
kkinnunen
cd6ca9e689 Make SkImage::getTexture() const
Make SkImage::getTexture() const. At the moment the function
does not mutate the state.

One use-case is that this makes it possible in the future to add draw
function to SkBaseDevice functions. The device draw functions take
const ref objects, but SkGpuDevice likely would benefit of using the
getTexture().

BUG=skia:3388
R=reed@google.com

Review URL: https://codereview.chromium.org/925853002
2015-02-18 10:50:52 -08:00
mtklein
1e4e814c03 SK_NO_FLATE
Also remove skia_zlib_static.  We're not using it.  We don't even have zlib in DEPS.

No public API changes.
TBR=reed@google.com

BUG=skia:

Review URL: https://codereview.chromium.org/936583002
2015-02-17 13:10:43 -08:00
reed
9e779d4951 add gm for path-arcs, and catch degenerate arc in conic-case
BUG=skia:3428

Review URL: https://codereview.chromium.org/931183002
2015-02-17 11:43:14 -08:00
reed
f87fe78bc3 use common impl for drawTextOnPath
BUG=skia:

Review URL: https://codereview.chromium.org/925343003
2015-02-17 10:33:54 -08:00
djsollen
523cda3943 Remove android specific srcPath from SkPath
Review URL: https://codereview.chromium.org/926693002
2015-02-17 08:06:33 -08:00
reed
9e447c08de remove unneeded preroll
BUG=skia:
TBR=robertphilips

Review URL: https://codereview.chromium.org/927443006
2015-02-15 11:08:40 -08:00
scroggo
0864908ca5 Make SkImageGenerator::getPixels() return an enum.
The new enum describes the nature of the failure. This is in
preparation for writing a replacement for SkImageDecoder, which will
use this interface.

Update the comments for getPixels() to specify what it means to pass
an SkImageInfo with a different size.

Make SkImageGenerator Noncopyable.

Leave onGetYUV8Planes alone, since we have separate discussions
regarding modifying that API.

Make callers of SkImageDecoder consistently handle kPartialSuccess.
Previously, some callers considered it a failure, and others considered
it a success.

BUG=skia:3257

Review URL: https://codereview.chromium.org/919693002
2015-02-13 11:13:34 -08:00
fmalita
f89f60f697 [SkSVGDevice] Full font family support
Use a family name iterator and list all names instead of just one
returned by SkTypeface::getFamilyName().

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

Review URL: https://codereview.chromium.org/923583002
2015-02-13 08:55:24 -08:00
mtklein
0a62ad734c Revert of I cannot remember what the race here actually was. (patchset #1 id:1 of https://codereview.chromium.org/922873002/)
Reason for revert:
http://build.chromium.org/p/client.skia/builders/Test-Ubuntu13.10-GCE-NoGPU-x86_64-Release-TSAN/builds/1557/steps/dm/logs/stdio

Original issue's description:
> I cannot remember what the race here actually was.
>
> Removing SkTRacy will show us, or perhaps show us we already fixed the race.
>
> BUG=chromium:437511
>
> No public API changes.
> TBR=reed@google.com
>
> Committed: https://skia.googlesource.com/skia/+/71409c83e69b387b3c5d567197d0421c36baf68d

TBR=bungeman@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:437511

Review URL: https://codereview.chromium.org/923543003
2015-02-12 15:32:07 -08:00
mtklein
71409c83e6 I cannot remember what the race here actually was.
Removing SkTRacy will show us, or perhaps show us we already fixed the race.

BUG=chromium:437511

No public API changes.
TBR=reed@google.com

Review URL: https://codereview.chromium.org/922873002
2015-02-12 15:24:51 -08:00
reed
05d9044de4 optional res-scale parameter to getFillPath
BUG=skia:
NOTREECHECKS=True
TBR=

Review URL: https://codereview.chromium.org/911053005
2015-02-12 13:35:52 -08:00
mtklein
979e0eacbd Spin off SkTHashTable, SkTHashMap, SkTHashSet
SkTHashTable is very similar to SkTDynamicHash, except it's generalized to support non-pointer value types.

It doesn't support remove(), just to keep things simple (it's not hard to add).
Instead of an iterator, it has foreach(), again, to keep things simple.

SkTHashMap<K,V> and SkTHashSet<T> build a friendlier experience on top of SkTHashTable.

BUG=skia:

Review URL: https://codereview.chromium.org/925613002
2015-02-12 13:20:08 -08:00
djsollen
90b5c0ced0 Expose SkPathRef::unique through SkPath.
This allows for the removal of SkPath::mSourcePath on Android
as they now have a better indicator of whether or not the path
can be used again via the Java API.

Review URL: https://codereview.chromium.org/913413004
2015-02-12 12:08:40 -08:00
bungeman
e998b7ff3a Move SkOSFile::Iter impls into ports.
This was one large ifdef in SkOSFile.cpp in utils.
This moves the code to existing ports files.

Review URL: https://codereview.chromium.org/920593002
2015-02-12 07:18:27 -08:00
bungeman
c3c694342a Fix append_fallback_font_families_for_locale.
The language was being set to garbage, now set to part of the file name.
Add a test to ensure we continue to parse fallback directories correctly.

BUG=chromium:422180

Review URL: https://codereview.chromium.org/912053003
2015-02-11 07:18:51 -08:00
bsalomon
3632f8473a Add tests for STArray swap
Review URL: https://codereview.chromium.org/909583003
2015-02-10 19:46:58 -08:00
reed
454fa71cc3 check for nonfinites in rrects
BUG=457128

Review URL: https://codereview.chromium.org/913743002
2015-02-10 08:46:22 -08:00
robertphillips
e85a32d4f8 Clean up clipping code a bit
Review URL: https://codereview.chromium.org/913693002
2015-02-10 08:16:55 -08:00
mtklein
1b9c8bb0a1 Only instance-count in SK_DEVELOPER builds (our debug builds, not Chrome's)
BUG=skia:

Review URL: https://codereview.chromium.org/910973003
2015-02-10 06:14:05 -08:00
mtklein
e72a80db3a Port SkLazyPtr to new SkAtomics.h
No algorithmic changes.  The new APIs let us avoid a few ugly trips through void*,
and I've made the consume/acquire/release decision explicitly conditioned on TSAN.

This should fix the attached bug, which is TSAN seeing us implementing the
sk_consume_load() with a relaxed load, where we used to pass __ATOMIC_CONSUME
to TSAN.  This restores us to the status quo of a couple weeks ago, where we
use relaxed loads (to avoid an extra dmb on ARM) for all setups except TSAN,
who gets the logically correct memory order, consume.

No public API changes.
TBR=reed@google.com

BUG=chromium:455606

Review URL: https://codereview.chromium.org/908943002
2015-02-09 14:47:06 -08:00
bsalomon
23e619cf46 Reimplement gpu message bus for invalidated bitmap gen IDs
Review URL: https://codereview.chromium.org/902873002
2015-02-06 11:54:28 -08:00
reed
3cb3840c9a Rename SkCanvasDrawable to SkDrawable, and make public
(patchset #2 id:20001 of https://codereview.chromium.org/903993002/)"

This reverts commit c4e8772492.

BUG=skia:
TBR=
NOTREECHECKS=True

Review URL: https://codereview.chromium.org/898343004
2015-02-06 08:36:15 -08:00
reed
c4e8772492 Revert of rename SkCanvasDrawable to SkDrawable, and make public (patchset #2 id:20001 of https://codereview.chromium.org/903993002/)
Reason for revert:
bug in gyp

Original issue's description:
> rename SkCanvasDrawable to SkDrawable, and make public
>
> BUG=skia:
> NOTRY=True
> ... winbuilder flake
>
> Committed: https://skia.googlesource.com/skia/+/4ae9eb7463cf2160723407359608f221c0d5e2a6

TBR=robertphillips@google.com,djsollen@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/882853006
2015-02-06 08:20:07 -08:00
reed
4ae9eb7463 rename SkCanvasDrawable to SkDrawable, and make public
BUG=skia:
NOTRY=True
... winbuilder flake

Review URL: https://codereview.chromium.org/903993002
2015-02-06 08:02:57 -08:00
joshualitt
de358a9946 BUG=skia:
Review URL: https://codereview.chromium.org/894693003
2015-02-05 08:19:35 -08:00
reed
b0df8be137 return reference to cache instead of copying the mask
BUG=437128

Review URL: https://codereview.chromium.org/889303005
2015-02-04 09:07:17 -08:00
fmalita
1a481fe4bf [SkSVGDevice] Initial clipping support
Implement SVG clips based on clip stack flattening -
which is now exposed in SkClipStack::asPath() and shared
with SkCanvas's simplify-clip code.

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

Review URL: https://codereview.chromium.org/876923003
2015-02-04 07:39:34 -08:00
mtklein
7b274c78fb Port SkRefCnt.h to new SkAtomics.h
This adds sk_memory_barrier(), implemented using sk_atomic_fetch_add() on an uninitialized variable.  If that becomes a problem we can drop this to the porting layer, using std::atomic_thread_fence() / __atomic_thread_fence() / __sync_synchronize().

The big win is that ref() doesn't generate a memory barrier any more on ARM.
This is an instance of SkSafeRef() in SkPaint(const SkPaint&) after this CL:
     4d0:       684a            ldr     r2, [r1, #4]
     4d2:       6018            str     r0, [r3, #0]
     4d4:       b13a            cbz     r2, 4e6 <_ZN7SkPaintC1ERKS_+0x2e>
     4d6:       1d10            adds    r0, r2, #4
     4d8:       e850 4f00       ldrex   r4, [r0]
     4dc:       3401            adds    r4, #1
     4de:       e840 4500       strex   r5, r4, [r0]
     4e2:       2d00            cmp     r5, #0
     4e4:       d1f8            bne.n   4d8 <_ZN7SkPaintC1ERKS_+0x20>

Here's the before,  pretty much the same with two memory barriers surrounding the ref():
     4d8:       684a            ldr     r2, [r1, #4]
     4da:       6018            str     r0, [r3, #0]
     4dc:       b15a            cbz     r2, 4f6 <_ZN7SkPaintC1ERKS_+0x3e>
     4de:       1d10            adds    r0, r2, #4
     4e0:       f3bf 8f5f       dmb     sy
     4e4:       e850 4f00       ldrex   r4, [r0]
     4e8:       3401            adds    r4, #1
     4ea:       e840 4500       strex   r5, r4, [r0]
     4ee:       2d00            cmp     r5, #0
     4f0:       d1f8            bne.n   4e4 <_ZN7SkPaintC1ERKS_+0x2c>
     4f2:       f3bf 8f5f       dmb     sy

The miscellaneous files in here are just fixups to explicitly include SkMutex.h,
instead of leeching it off SkRefCnt.h.

No public API changes.
TBR=reed@google.com

Build trybots seem hosed.
NOTRY=true

BUG=skia:

Review URL: https://codereview.chromium.org/896803002
2015-02-03 13:38:58 -08:00
mtklein
e67164d9b3 DM: wire up --leaks / -l again
No public API changes.
TBR=reed@google.com

BUG=skia:

Review URL: https://codereview.chromium.org/893043002
2015-02-02 13:24:37 -08:00
mtklein
a669bc7a7a Atomics overhaul.
This merges and refactors SkAtomics.h and SkBarriers.h into SkAtomics.h and
some ports/ implementations. The major new feature is that we can express
memory orders explicitly rather than only through comments.

The porting layer is reduced to four template functions:
  - sk_atomic_load
  - sk_atomic_store
  - sk_atomic_fetch_add
  - sk_atomic_compare_exchange
From those four we can reconstruct all our previous sk_atomic_foo.

There are three ports:
  - SkAtomics_std:    uses C++11 <atomic>,             used with MSVC
  - SkAtomics_atomic: uses newer GCC/Clang intrinsics, used on not-MSVC where possible
  - SkAtomics_sync:   uses older GCC/Clang intrinsics, used where SkAtomics_atomic not supported

No public API changes.
TBR=reed@google.com

BUG=skia:

Review URL: https://codereview.chromium.org/896553002
2015-02-02 12:22:07 -08:00
fmalita
3d91aad293 Disable LCD text when rasterizing SkPictureShader tiles.
BUG=chromium:453299
R=reed@google.com

Review URL: https://codereview.chromium.org/884163003
2015-02-02 05:25:04 -08:00
reed
418149250a export SkImageInfo
BUG=skia:

Review URL: https://codereview.chromium.org/893603005
2015-01-30 14:54:38 -08:00
brucedawson
aea85dc3d3 Disable the noisiest /analyze warning in Chrome. ~3,700/12,000
Decades ago Intel decided that the bsr (Bit Scan Reverse) instruction
should have undefined results if its argument is zero. This probably
makes the instruction harder to implement and it definitely makes it
more difficult to use.

In SkCLZ_portable it requires a check for a zero argument, but despite
that check /analyze still warns that _BitScanReverse might fail
(because it doesn't know what can cause failures). Because this warning
occurs in a frequently included header file it ends up being very noisy,
accounting for ~30% of all warnings (before deduplication).

Suppressing this useless warning will make the raw results easier to
look through.

Review URL: https://codereview.chromium.org/872673007
2015-01-30 12:57:50 -08:00
scroggo
1872ad0fe9 Remove unused globalRef/globalUnref.
BUG=skia:1482

Review URL: https://codereview.chromium.org/887993003
2015-01-30 07:34:48 -08:00
scroggo
5d2fd4465b Remove unused hasLocalMatrix.
This method is not called anywhere on Android or Chrome, and it
has a FIXME that it may not be correct.

A client can still getLocalMatrix().isIdentity() if they need this
information. (It has the same FIXME, and perhaps we should revisit
it. In the meantime, this convenience method is not needed.)

Review URL: https://codereview.chromium.org/882443007
2015-01-30 07:14:04 -08:00
scroggo
527b28732d Update comment for SkMallocPixelRef::NewWithProc.
Add a comment about using a NULL ReleaseProc.

BUG=skia:2185

Review URL: https://codereview.chromium.org/885573005
2015-01-29 13:52:13 -08:00
reed
c778904a5b share code between arcTo and addArc, update dox
BUG=skia:

Review URL: https://codereview.chromium.org/863123005
2015-01-29 12:59:11 -08:00
mtklein
4f358fc269 Make SkWriter32::snapshotAsData() a dumb copy.
SkWriter32::snapshotAsData() is no longer performance critical.
It's only used when we're serializing to disk.

BUG=skia:2289

Review URL: https://codereview.chromium.org/875403005
2015-01-29 12:03:53 -08:00
senorblanco
772604c214 Add a flag to flush the canvases during SkMultiPictureDraw::draw().
This is necessary for multisampling, so that each multisampled render
target resolves before Chrome's compositor attempts to draw the
texture.

BUG=skia:

Review URL: https://codereview.chromium.org/878653004
2015-01-28 11:01:06 -08:00
fmalita
3dc40ac9f9 Conservative SkTextBlob bounds.
Compute cheaper/more conservative text blob bounds based on the typeface
maximum glyph bbox.

BUG=chromium:451401
R=reed@google.com,bungeman@google.com

Review URL: https://codereview.chromium.org/886473002
2015-01-28 10:56:06 -08:00
bungeman
5f213d9627 SkTypeface to use SkStreamAsset.
SkTypeface already requires typeface streams to support SkStreamAsset
in practice, and in practice all users are already supplying them.

Review URL: https://codereview.chromium.org/869763002
2015-01-27 05:39:10 -08:00
robertphillips
0a482f4414 Fix Chrome build
Switch SkShader's toString method to not be pure virtual due to derived classes in Chromium

TBR=bsalomon@google.com
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/875043002
2015-01-26 07:00:05 -08:00
robertphillips
42dbfa8651 Add patheffects to debugger printout
TBR=bsalomon@google.com

Review URL: https://codereview.chromium.org/872043002
2015-01-26 06:08:52 -08:00
reed
96a857ef5a initial preroll api
BUG=skia:

Review URL: https://codereview.chromium.org/855473002
2015-01-25 10:33:58 -08:00
bsalomon
a3ca15c314 Remove deprecated SkSurface::NewRenderTarget factories
Review URL: https://codereview.chromium.org/837723008
2015-01-23 11:02:50 -08:00
bsalomon
eaaaf0b16c Take budgeted param when snapping new image.
Review URL: https://codereview.chromium.org/872543002
2015-01-23 08:08:04 -08:00
reed
f803da12cf add newImage API
BUG=skia:3277
related bug: skbug.com/3276

Review URL: https://codereview.chromium.org/821083002
2015-01-23 05:58:07 -08:00
egdaniel
dcfb7cf336 Remove the need for asCoeff in SkXfermode.
BUG=skia:

Review URL: https://codereview.chromium.org/864833002
2015-01-22 06:52:29 -08:00
bungeman
2dca817edb Remove staging SkStream::unref().
SkStream::unref() was added to ease transitioning off of SkStream
deriving from SkRefCnt. It is no longer needed, remove it.

TBR=reed@google.com

Review URL: https://codereview.chromium.org/861413002
2015-01-22 06:08:31 -08:00