Commit Graph

143 Commits

Author SHA1 Message Date
senorblanco@chromium.org
9a6eb0e1e8 Provide a GPU implementation of SkArithmeticMode, using a custom GrEffect exposed via asNewEffectOrCoeff().
Doing it this way required modifying the arithmode GM to use saveLayer()/restore() rather than creating an offscreen SkBitmap, since otherwise the compositing is always done in raster mode. Fixing that in turn exposed that SkArithmeticMode did not work in Picture mode, since it wasn't flattenable. Made it so.

Note: this will require rebaselining the arithmode GM (again).

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

Originally committed: https://code.google.com/p/skia/source/detail?r=9324
Reverted: https://code.google.com/p/skia/source/detail?r=9325

Review URL: https://codereview.chromium.org/16064002

git-svn-id: http://skia.googlecode.com/svn/trunk@9330 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-29 20:55:09 +00:00
senorblanco@chromium.org
06e7424c70 Revert "Provide a GPU implementation of SkArithmeticMode, using a custom GrEffect exposed via asNewEffectOrCoeff()."
This reverts commit b8ffe17b5c684f9cfff02285f27e6aa1f75c9b53.

TBR=robertphillips

Review URL: https://codereview.chromium.org/16115007

git-svn-id: http://skia.googlecode.com/svn/trunk@9325 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-29 19:05:54 +00:00
senorblanco@chromium.org
6b6c1dc34c Provide a GPU implementation of SkArithmeticMode, using a custom GrEffect exposed via asNewEffectOrCoeff().
Doing it this way required modifying the arithmode GM to use saveLayer()/restore() rather than creating an offscreen SkBitmap, since otherwise the compositing is always done in raster mode. Fixing that in turn exposed that SkArithmeticMode did not work in Picture mode, since it wasn't flattenable. Made it so.

Note: this will require rebaselining the arithmode GM (again).

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

Review URL: https://codereview.chromium.org/16064002

git-svn-id: http://skia.googlecode.com/svn/trunk@9324 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-29 18:50:46 +00:00
reed@google.com
3d3a860d0b Add flag to gradients to interpolate colors in premul space. Experimental API to encapsulate the shared parameters for all gradients into a struct.
BUG=
R=bsalomon@google.com

Review URL: https://codereview.chromium.org/15893002

git-svn-id: http://skia.googlecode.com/svn/trunk@9273 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-24 14:58:44 +00:00
robertphillips@google.com
1202c2ac56 Add printing of SkColorFilter-derived classes to debugger
https://codereview.chromium.org/15697012/



git-svn-id: http://skia.googlecode.com/svn/trunk@9255 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-23 14:00:17 +00:00
commit-bot@chromium.org
8f838259ab Add methods to SkLayerDrawLooper to allow adding layers on top
as well as on the bottom.

This is more convenient for some callers who generate layers
from a data structure in bottom-to-top, rather than top-to-bottom,
order.

BUG=242529
R=tomhudson@chromium.org

Author: jbroman@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15314003

git-svn-id: http://skia.googlecode.com/svn/trunk@9233 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-22 12:35:50 +00:00
reed@google.com
b83cb9bf89 add SkLerpXfermode
BUG=
R=bsalomon@google.com

Review URL: https://codereview.chromium.org/15602003

git-svn-id: http://skia.googlecode.com/svn/trunk@9229 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-21 21:33:11 +00:00
commit-bot@chromium.org
5da3f22003 Fix includes in SkLayerDrawLooper.h. It was previously not possible to
include this header unless SkPoint and SkPaint were previously defined.

BUG=
R=reed@google.com, senorblanco@chromium.org

Author: jbroman@chromium.org

Review URL: https://chromiumcodereview.appspot.com/14607015

git-svn-id: http://skia.googlecode.com/svn/trunk@9130 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-05-14 20:11:23 +00:00
sugoi@google.com
384f5e2a9b Adding missing SK_API identifier to class so that it's accessible in debug blink.
Review URL: https://codereview.chromium.org/14190016

git-svn-id: http://skia.googlecode.com/svn/trunk@8857 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-04-25 14:54:15 +00:00
senorblanco@chromium.org
d043ccee37 Allow single-pass filters (which use asNewEffect()) to participate in the image filter DAG. This was done by introducing the SkSinglePassImageFilter abstract base class, which implements canFilterImageGPU() and filterImageGPU() on behalf of the derived class. The derived class still only needs to asNewEffect(). This allows us to recurse on the filter input in SkSinglePassImageFilter::onFilterImageGPU(). It also allows us to remove any knowledge of single-pass image filters from SkGpuDevice and from the SkImageFilter base class as well.
BUG=

Review URL: https://codereview.chromium.org/13602013

git-svn-id: http://skia.googlecode.com/svn/trunk@8563 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-04-08 19:43:22 +00:00
sugoi@google.com
e3b4c5097a New SVG turbulence in Skia
This cl contains the code for CPU generation of noise.

TEST:Added 'perlinnoise' gm
Review URL: https://codereview.chromium.org/13094003

git-svn-id: http://skia.googlecode.com/svn/trunk@8541 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-04-05 13:47:09 +00:00
robertphillips@google.com
8cf10efe75 Reverting r8376, r8373 and r8371 due to Android shader compilation failures
git-svn-id: http://skia.googlecode.com/svn/trunk@8378 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-25 22:16:02 +00:00
sugoi@google.com
2daa365123 New SVG turbulence in Skia
This cl contains the code for both CPU and GPU generation of noise. Both
codepaths yield equivalent results.

TEST:Added 'perlinnoise' gm
Review URL: https://codereview.chromium.org/13047005

git-svn-id: http://skia.googlecode.com/svn/trunk@8371 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-25 19:31:04 +00:00
robertphillips@google.com
b7636d3fad Reverting 8313 (SVG turbulence) due to Ubuntu failures
git-svn-id: http://skia.googlecode.com/svn/trunk@8316 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-21 21:22:03 +00:00
sugoi@google.com
3067cc904d New SVG turbulence in Skia
This cl contains the code for both CPU and GPU generation of noise. Both codepaths yield equivalent results.

TEST:Added 'perlinnoise' gm
Review URL: https://codereview.appspot.com/7322060

git-svn-id: http://skia.googlecode.com/svn/trunk@8313 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-21 21:01:07 +00:00
robertphillips@google.com
0bd80fa01b Added toString to SkMaskFilter-derived classes
https://codereview.appspot.com/7889043/



git-svn-id: http://skia.googlecode.com/svn/trunk@8194 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-18 17:53:38 +00:00
sugoi@google.com
4b6d432f1e Small adjustments to SkRectShaderImageFilter to follow up on original cl.
Review URL: https://codereview.appspot.com/7377049

git-svn-id: http://skia.googlecode.com/svn/trunk@7816 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-21 20:26:50 +00:00
sugoi@google.com
a1c511b870 New SkRectShaderImageFilter image filter
This new changelist also introduces a new image filter called SkRectShaderImageFilter which is make to simply apply a shader on a region without using any inputs.

TEST=Added ShaderImageFilter test
Review URL: https://codereview.appspot.com/7300046

git-svn-id: http://skia.googlecode.com/svn/trunk@7808 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-21 15:02:28 +00:00
senorblanco@chromium.org
377c14a1e6 Nuke SkSingleInputImageFilter. 99% of its functionality was refactored into SkImageFilterUtils in https://code.google.com/p/skia/source/detail?r=7467, so it has outlived its usefulness.
Review URL: https://codereview.appspot.com/7277055

git-svn-id: http://skia.googlecode.com/svn/trunk@7563 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-04 22:57:21 +00:00
reed@google.com
ba3a3c93b2 revert name changes to SkBlendImageFilter. It (correctly) named its enum kMultiply_Mode,
and handled that itself internally, rather than calling SkXfermode. This CL removes
the kModulate_Mode alias from its list.



git-svn-id: http://skia.googlecode.com/svn/trunk@7509 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-01 14:35:09 +00:00
robertphillips@google.com
6cfe1fba33 Adding kMultiply_Mode (as an alias to kModulate_Mode) in SkBlendImageFilter.h to get Chrome compiling
git-svn-id: http://skia.googlecode.com/svn/trunk@7482 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-31 01:47:58 +00:00
reed@google.com
8d3cd7a170 clone of https://codereview.appspot.com/7208043/
Review URL: https://codereview.appspot.com/7232062

git-svn-id: http://skia.googlecode.com/svn/trunk@7476 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-30 21:36:11 +00:00
senorblanco@chromium.org
c2594f4106 This changes the signature of SkImageFilter::filterImageGPU() to use SkBitmaps for input and output, and removes the rect param. This allows us to return textures which are larger than the actual result, such as when GrAutoScratchTextures are used. The SkBitmap's size represents the active region, while the GrTexture's size is the full texture size.
This fixes the bicubic image filter GM on the GPU, which otherwise draws garbage outside the filtered region.  It also moves us closer to unifying the signatures of SkImageFilter::onFilterImage() and SkImageFilter::filterImageGPU().

Review URL: https://codereview.appspot.com/7180048

git-svn-id: http://skia.googlecode.com/svn/trunk@7467 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-30 19:08:47 +00:00
robertphillips@google.com
4991b8f234 Added toString to SkDrawLooper-derived classes
https://codereview.appspot.com/7195054/



git-svn-id: http://skia.googlecode.com/svn/trunk@7422 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-28 20:21:59 +00:00
skia.committer@gmail.com
e16efc1882 Sanitizing source files in Skia_Periodic_House_Keeping
git-svn-id: http://skia.googlecode.com/svn/trunk@7406 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-26 07:06:02 +00:00
reed@google.com
4bbdeac58c add optional cull-rect to patheffects, so they can do less work if their results
lie outside of the current clip-bounds (the cull rect).
Review URL: https://codereview.appspot.com/7206044

git-svn-id: http://skia.googlecode.com/svn/trunk@7378 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-24 21:03:11 +00:00
skia.committer@gmail.com
98ded84b80 Sanitizing source files in Skia_Periodic_House_Keeping
git-svn-id: http://skia.googlecode.com/svn/trunk@7332 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-23 07:06:17 +00:00
robertphillips@google.com
b83b6b4f76 Added toString to SkXfermode-derived classes (for debugger)
https://codereview.appspot.com/7139058/



git-svn-id: http://skia.googlecode.com/svn/trunk@7308 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-22 14:32:09 +00:00
senorblanco@chromium.org
3f2d45aff6 (Relanding r7275 with assert fix, plus fixes from r7276, r7280, r7283.)
Implement a bicubic resampling image filter, with raster and GPU backends.
In order to get this to work on the GPU side, I had to modify the width and height of the drawn texture in drawSprite() and drawDevice() to use the filtered texture's dimensions, instead of the source texture.  (This wasn't a problem before since all other image filters produce results the same dimensions as their input texture.)
For now, this implementation only does axis-aligned scaling (same as the Lanczos-3 implementation in Chrome).  It's also done for correctness and clarity, not speed, so there are lots of opportunities for speedups.

Committed: https://code.google.com/p/skia/source/detail?r=7275

Review URL: https://codereview.appspot.com/7033049

git-svn-id: http://skia.googlecode.com/svn/trunk@7287 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-18 20:48:20 +00:00
robertphillips@google.com
c51f752554 Reverting chain of SkBicubicImageFilter changes (7275, 7276, 7280 & 7283)
git-svn-id: http://skia.googlecode.com/svn/trunk@7285 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-18 19:20:52 +00:00
senorblanco@chromium.org
744820e657 Implement a bicubic resampling image filter, with raster and GPU backends.
In order to get this to work on the GPU side, I had to modify the width and height of the drawn texture in drawSprite() and drawDevice() to use the filtered texture's dimensions, instead of the source texture.  (This wasn't a problem before since all other image filters produce results the same dimensions as their input texture.)
For now, this implementation only does axis-aligned scaling (same as the Lanczos-3 implementation in Chrome).  It's also done for correctness and clarity, not speed, so there are lots of opportunities for speedups.

Review URL: https://codereview.appspot.com/7033049

git-svn-id: http://skia.googlecode.com/svn/trunk@7275 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-18 17:29:15 +00:00
bsalomon@google.com
0ac6af4997 Wrap GrEffects in GrEffectPtr.
This is the first step towards automatic recycling of scratch resouces in the cache via ref-cnts.

R=robertphillips@google.com
Review URL: https://codereview.appspot.com/7092061

git-svn-id: http://skia.googlecode.com/svn/trunk@7222 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-16 15:16:18 +00:00
robertphillips@google.com
76f9e938df Added print out of SkShader information to debugger
https://codereview.appspot.com/7105045/



git-svn-id: http://skia.googlecode.com/svn/trunk@7201 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-15 20:17:47 +00:00
sugoi@google.com
781cc76e0f Implementation of the displacement effect (both CPU and GPU)
TEST=Added new GM called "displacement"
Review URL: https://codereview.appspot.com/7058075

git-svn-id: http://skia.googlecode.com/svn/trunk@7182 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-15 15:40:19 +00:00
senorblanco@chromium.org
171f5c76b9 Rename onFilterImageGPU to filterImageGPU(), to match skia convention. No change in functionality.
(Note that this does mean that clients must override onFilterImage() to implement the raster path, but filterImageGPU() to implement the GPU path.)

Review URL: https://codereview.appspot.com/7058078

git-svn-id: http://skia.googlecode.com/svn/trunk@7123 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-01-10 19:55:18 +00:00
mike@reedtribe.org
61490fa4d2 fix warnings related to constness in overrides of SkColorFilter
update samples for circle testing



git-svn-id: http://skia.googlecode.com/svn/trunk@6943 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-24 14:38:46 +00:00
reed@google.com
30711b764b change SkMaskFilter methods to const, in preparation for making the class as
immutable and re-entrant safe.
Review URL: https://codereview.appspot.com/6944069

git-svn-id: http://skia.googlecode.com/svn/trunk@6881 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-18 19:18:39 +00:00
reed@google.com
fdba4041c3 change all interfaces for SkRasterizer to const, in preparation for marking it
as immutable/re-entrant safe.
Review URL: https://codereview.appspot.com/6936064

git-svn-id: http://skia.googlecode.com/svn/trunk@6878 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-18 16:57:03 +00:00
reed@google.com
548a1f3210 change all patheffect methods to const, in preparation for marking its
subclasses as immutable/re-entrant safe.
Review URL: https://codereview.appspot.com/6949071

git-svn-id: http://skia.googlecode.com/svn/trunk@6877 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-18 16:12:09 +00:00
reed@google.com
bada64428a Make all colorfilter methods const, in preparation for declaring them
to be immutable and reentrant-safe

git-svn-id: http://skia.googlecode.com/svn/trunk@6856 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-17 20:21:44 +00:00
reed@google.com
30da745bbf Mark all methods on SkXfermode as const, in preparation for declaring all
xfermodes as immutable/reentrant-safe
Review URL: https://codereview.appspot.com/6941065

git-svn-id: http://skia.googlecode.com/svn/trunk@6855 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-17 19:55:24 +00:00
senorblanco@chromium.org
4a9a612b52 Pull SkMergeImageFilter out into its own file.
Review URL: https://codereview.appspot.com/6873052

git-svn-id: http://skia.googlecode.com/svn/trunk@6662 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-12-04 14:18:50 +00:00
senorblanco@chromium.org
91f489a65d Modify the blur bench to add tests for high-quality blurs, and large non-integer blurs. Change the Coarse flag (which just turns on separable blurs) to an #ifdef, since separable is no longer just Coarse. (This #ifdef will hopefully be shortlived, once Chrome has switched).
The separable blur algorithm gives +45% on SampleBlur, +84% on SampleBigBlur, +31% on TheVerge, +35 to +85% on blurbench in HQ (depending on size), +8 to +35% in low quality.  (All of these on 32bit MacPro).

Review URL: https://codereview.appspot.com/6851117

git-svn-id: http://skia.googlecode.com/svn/trunk@6601 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-29 17:09:27 +00:00
skia.committer@gmail.com
687c57c7d5 Sanitizing source files in Skia_Periodic_House_Keeping
git-svn-id: http://skia.googlecode.com/svn/trunk@6594 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-29 02:01:19 +00:00
robertphillips@google.com
629ab54066 Added dashing fast path
https://codereview.appspot.com/6844067/



git-svn-id: http://skia.googlecode.com/svn/trunk@6585 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-28 17:18:11 +00:00
reed@google.com
971aca7557 change SkDrawFilter::filter to return a bool, where false means don't-draw
Review URL: https://codereview.appspot.com/6851111

git-svn-id: http://skia.googlecode.com/svn/trunk@6551 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-26 20:26:54 +00:00
senorblanco@chromium.org
336b4da6b0 Separable mask blurs: Add compile-time flag. Fix reversed offsets in asymmetrical blurs (this bug cancels itself out, but I thought it might be confusing for future readers). Use correct stride in asymmetrical blurs (this is a real bug).
Review URL: https://codereview.appspot.com/6782089

git-svn-id: http://skia.googlecode.com/svn/trunk@6508 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-20 17:09:40 +00:00
senorblanco@chromium.org
9daf96afb3 Break out SkOffsetImageFilter into its own file, and derive it from
SkSingleInputImageFilter, to make it DAG-friendly.

Review URL: https://codereview.appspot.com/6822086

git-svn-id: http://skia.googlecode.com/svn/trunk@6315 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-11-06 20:29:39 +00:00
senorblanco@chromium.org
cd9f55989e Add a factory Create function for SkColorFilterImageFilter, and move the matrix optimization there. This will allow the Chrome compositor to extract the optimized matrix, and potentially apply the color matrix itself, saving a buffer allocation & draw.
Review URL: https://codereview.appspot.com/6739057

git-svn-id: http://skia.googlecode.com/svn/trunk@6152 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-26 19:37:00 +00:00
bsalomon@google.com
021fc736f8 GrCustomStage Renaming Part 5
Stuff found by searching for "stage".

R=robertphillips@google.com
Review URL: https://codereview.appspot.com/6772043

git-svn-id: http://skia.googlecode.com/svn/trunk@6089 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-10-25 12:47:42 +00:00