reed
9fa60daad4
Simplify flattening to just write enough to call the factory/public-constructor for the class. We want to *not* rely on private constructors, and not rely on calling through the inheritance hierarchy for either flattening or unflattening(CreateProc).
...
Refactoring pattern:
1. guard the existing constructor(readbuffer) with the legacy build-flag
2. If you are a instancable subclass, implement CreateProc(readbuffer) to create a new instances from the buffer params (or return NULL).
If you're a shader subclass
1. You must read/write the local matrix if your class accepts that in its factory/constructor, else ignore it.
R=robertphillips@google.com , mtklein@google.com , senorblanco@google.com , senorblanco@chromium.org , sugoi@chromium.org
Author: reed@google.com
Review URL: https://codereview.chromium.org/395603002
2014-08-21 07:59:51 -07:00
senorblanco
673d9732bf
Check all scratch texture allocations for image filters.
...
BUG=403677
R=bsalomon@google.com
NOTREECHECKS=true
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/473283002
2014-08-15 10:48:43 -07:00
reed
5b1b2dbe76
remove SkStippleMaskFilter - no external clients
...
TBR=
Author: reed@google.com
Review URL: https://codereview.chromium.org/462013002
2014-08-12 05:50:10 -07:00
joshualitt
5acfea789d
2D kernel initial wiring for Guassian
...
BUG=skia:
R=senorblanco@chromium.org , bsalomon@chromium.org , bsalomon@google.com
Author: joshualitt@chromium.org
Review URL: https://codereview.chromium.org/418223009
2014-08-11 13:55:34 -07:00
reed
addf2edf3d
add localMatrix to gradient Descriptor
...
this consolidation will also help transisition to new flattening pattern, where we want to
have a flatten/unflatten method on all of the common gradient params (i.e. Descriptor).
BUG=skia:
R=egdaniel@google.com
Author: reed@google.com
Review URL: https://codereview.chromium.org/461643002
2014-08-11 08:28:24 -07:00
senorblanco
3d822c29d4
Intersect SkPictureImageFilter bounds against clip bounds.
...
Intersect SkPictureImageFilter bounds against clip bounds
to avoid unnecessary processing. This is how the other
filters work (via applyCropRect()), but SkPictureImageFilter
maintains its own crop.
BUG=skia:
R=bsalomon@google.com
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/428263003
2014-07-30 14:49:31 -07:00
kkinnunen
7510b224e5
Rename GrGLUniformManager to GrGLProgramDataManager
...
Rename GrGLUniformManager to GrGLProgramDataManager in anticipation that the
class would be used to manage shader resources that are not uniforms.
This is needed in order to implement NVPR on GLES.
R=bsalomon@google.com
Author: kkinnunen@nvidia.com
Review URL: https://codereview.chromium.org/365853002
2014-07-30 00:04:16 -07:00
joshualitt
5ae5fc59b2
Adding repeat mode to texture domain
...
BUG=skia:
R=bsalomon@chromium.org , senorblanco@chromium.org , bsalomon@google.com , junov@chromium.org
Author: joshualitt@chromium.org
Review URL: https://codereview.chromium.org/422123003
2014-07-29 12:59:27 -07:00
bungeman
d6aeb6dc8f
Fix thread unsafe mutex initialization.
...
BUG=skia:2779
R=robertphillips@google.com , mtklein@google.com , reed@android.com , bsalomon@google.com
Author: bungeman@google.com
Review URL: https://codereview.chromium.org/419113002
2014-07-25 11:52:48 -07:00
senorblanco
bc9845bb60
Remove the single-sigma version of SkDropShadowImageFilter::Create().
...
It's no longer used in Chrome.
BUG=skia:
R=bsalomon@google.com
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/407203002
2014-07-22 12:49:25 -07:00
joshualitt
ac9779234e
Initial change to move 2D kernel to its own file.
...
BUG=skia:
R=bsalomon@chromium.org , senorblanco@chromium.org , bsalomon@google.com
Author: joshualitt@chromium.org
Review URL: https://codereview.chromium.org/379253003
2014-07-22 09:52:12 -07:00
bsalomon
63e99f7a03
Allow GrGLEffects to produce variable length keys.
...
R=robertphillips@google.com , jvanverth@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/385713005
2014-07-21 08:03:14 -07:00
dominikg
1bd6f7de52
Remove use of SK_SUPPORT_LEGACY_LAYERRASTERIZER_API.
...
Mozilla have removed any uses of the legacy API from their Moz2D code.
Since they were the last users we know of, we can remove the legacy API.
BUG=skia:2187
R=scroggo@google.com , reed@google.com
Author: dominikg@chromium.org
Review URL: https://codereview.chromium.org/402613003
2014-07-21 02:43:20 -07:00
robertphillips
e8464994bb
Make SkPictureShader and SkPictureImageFilter use const SkPictures
...
R=mtklein@google.com , reed@google.com
TBR=reed@google.com
Author: robertphillips@google.com
Review URL: https://codereview.chromium.org/390023002
2014-07-14 07:53:27 -07:00
bsalomon
848faf00ec
This moves us towards variable length effect keys. The overall program key now allows for it. After the header it stores an array of offsets to effect keys. This allows us to grab the effect keys to pass to effects when they generate code. It also ensures that we can't get a collision by sets of keys that are different lengths but are the same when appended together.
...
R=robertphillips@google.com , jvanverth@google.com , egdaniel@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/356513003
2014-07-11 10:01:02 -07:00
mtklein
1c577cd3ee
Always initialize SkDashPathEffect fields.
...
SkDashPathEffect is flattened into a hash key as part of the old-and-busted
SkPicture paint deduping code. If all its fields aren't intialized, this hash
will be based on uninitialized data. This means the hash won't be
deterministic, and worse, Valgrind and MSAN will make us feel bad.
An alternative to this is to have SkDashPath::CalcDashParameters always
guarantee it writes something to all its output parameters, even when the dash
intervals make no sense. I like it being dumb and its users defensive, but
could go either way.
BUG=391001
R=reed@google.com , mtklein@google.com
Author: mtklein@chromium.org
Review URL: https://codereview.chromium.org/379813004
2014-07-09 09:54:11 -07:00
bsalomon
83d081ae1d
Goodbye GrEffectRef.
...
Also, reworked some var names and comments around SkShader::asNewEffect.
R=robertphillips@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/374923002
2014-07-08 09:56:11 -07:00
senorblanco
9ea3d57fde
Clean up SkImageFilter constructors.
...
Now that all creation of SkImageFilters goes through
factory Create() methods, there's no real reason for the
convenience constructors. Some SkImageFilter subclasses
which actually have zero DAG-able inputs were passing NULL
to the superclass constructor. This actually means 1 input,
with a NULL value, not zero inputs. This becomes more
relevant for the upcoming cache infrastructure, where this
indicates that the filter will use its src input, where in
fact some of these filters do not (they are image generators
only).
Limiting SkImageFilter to a single constructor resolves this
ambiguity.
Along the way, I removed all of the default parameters to
the constructors, since the Create methods always call them
with the full argument list.
BUG=skia:
R=reed@google.com
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/376953003
2014-07-08 09:16:22 -07:00
bsalomon
55fad7af61
Remove GrEffect::CreateEffectRef and GrEffect::AutoEffectRef.
...
R=robertphillips@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/371103003
2014-07-08 07:34:21 -07:00
bsalomon
97b9ab72cd
Make GrDrawState and GrPaint take GrEffect* instead of GrEffectRef*.
...
Make Sk-effect virtuals produce GrEffect* rather than GrEffectRef*
Make GrEffectRef a typedef for GrEffect.
Committed: https://skia.googlesource.com/skia/+/2011fe9cdfa63b83489a146cea6a724cede352c8
R=robertphillips@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/377503004
2014-07-08 06:52:35 -07:00
reed
969842ac9c
Revert of Make GrDrawState and GrPaint take GrEffect* instead of GrEffectRef*. ( https://codereview.chromium.org/377503004/ )
...
Reason for revert:
broke linux builders
Original issue's description:
> Make GrDrawState and GrPaint take GrEffect* instead of GrEffectRef*.
>
> Make Sk-effect virtuals produce GrEffect* rather than GrEffectRef*
>
> Make GrEffectRef a typedef for GrEffect.
>
> Committed: https://skia.googlesource.com/skia/+/2011fe9cdfa63b83489a146cea6a724cede352c8
R=robertphillips@google.com , bsalomon@google.com
TBR=bsalomon@google.com , robertphillips@google.com
NOTREECHECKS=true
NOTRY=true
Author: reed@google.com
Review URL: https://codereview.chromium.org/372053003
2014-07-07 15:17:49 -07:00
bsalomon
2011fe9cdf
Make GrDrawState and GrPaint take GrEffect* instead of GrEffectRef*.
...
Make Sk-effect virtuals produce GrEffect* rather than GrEffectRef*
Make GrEffectRef a typedef for GrEffect.
R=robertphillips@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/377503004
2014-07-07 15:11:31 -07:00
senorblanco
3df05015ef
Fix SkColorFilterImageFilter matrix optimization.
...
The order of matrices passed to multiplication was wrong (apparently,
this optimization was only being tested with matrices which commute).
See Chrome bug http://crbug.com/378362
R=sugoi@chromium.org
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/371523002
2014-07-03 11:13:09 -07:00
sugoi
c197c8a47e
Adding 64 bit checks
...
Added a few more checks to avoid overflowing 32 bit sizes while computing convolutions.
I also changed a dangerously misleading INHERITED typedef.
BUG=389570
R=senorblanco@google.com , senorblanco@chromium.org
Author: sugoi@chromium.org
Review URL: https://codereview.chromium.org/361403006
2014-07-03 10:44:26 -07:00
reed
e1085e0381
move SkChecksum and SkEmptyShader to private
...
TBR=reed@google.com
Author: reed@chromium.org
Review URL: https://codereview.chromium.org/366133002
2014-07-03 07:26:01 -07:00
senorblanco
ca6a7c2945
Make perlin noise do CTM-correct scaling.
...
When drawing perlin noise, generate noise at the resolution determined
by CTM, not by the resolution at construction time. This required moving
the generation of PaintingData to getContext() and asNewEffect() for the
raster and GPU paths, respectively.
It also required adjusting the matrices used during rendering
to be translate-only.
R=sugoi@chromium.org , bsalomon@google.com
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/358903002
2014-06-27 13:35:52 -07:00
senorblanco
7bf1068473
Remove SkBicubicImageFilter, and all related tests.
...
Now that we have SkResizeImageFilter, and the bicubic
resizing is part of skia proper, there's no need for a
specialized image filter.
BUG=skia:
R=bsalomon@google.com
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/357793002
2014-06-25 14:39:06 -07:00
bsalomon
22900008fb
Make GrGLShaderBuilder::fragmentPosition() return a vec4, with 1.0 as the zw components when in the y-flip case. This works around an Adreno driver bug.
...
Revert "Stop referencing gl_FragCoord z and w components."
This reverts commit 160a52ba21
.
R=jvanverth@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/354663002
2014-06-24 11:16:52 -07:00
bsalomon
160a52ba21
Stop referencing gl_FragCoord z and w components.
...
This fixes an Adreno driver bug where GL programs fail to link if the FS refers to these components of gl_FragCoord.
R=jvanverth@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/345083002
2014-06-20 07:25:14 -07:00
reed
9f0147143f
Revert of remove guarded code - there are no more callers ( https://codereview.chromium.org/343783002/ )
...
Reason for revert:
webkit still uses getTotalClip -- need to find where they define the guard.
../../skia/ext/skia_utils_mac.mm:400:42: error: no member named 'getTotalClip' in 'SkCanvas'
const SkRegion& clipRgn = canvas_->getTotalClip();
~~~~~~~ ^
Original issue's description:
> remove guarded code - there are no more callers
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/c5d5cf9489977aa6fba077d1dc242029fbb4859e
R=scroggo@google.com , reed@google.com
TBR=reed@google.com , scroggo@google.com
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Author: reed@chromium.org
Review URL: https://codereview.chromium.org/342843002
2014-06-18 15:51:20 -07:00
reed
c5d5cf9489
remove guarded code - there are no more callers
...
BUG=skia:
R=scroggo@google.com
Author: reed@google.com
Review URL: https://codereview.chromium.org/343783002
2014-06-18 14:41:26 -07:00
humper
4a24cd8ff4
Fifth attempt to land faster rect blur. Remove unnecessary conditionals from the shader.
...
approved over in https://codereview.chromium.org/331863006/ ; reuploading
because it had the wrong base url
BUG=skia:2095
R=bsalomon@google.com
TBR=bsalomon
Author: humper@google.com
Review URL: https://codereview.chromium.org/341543005
2014-06-17 13:39:31 -07:00
senorblanco
f3b50276a4
Perlin noise cleanup.
...
Remove Simplex noise implementation and now-redundant base classes.
BUG=skia:
R=sugoi@chromium.org , sugoi@google.com , reed@google.com
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/336043002
2014-06-16 10:49:58 -07:00
rs.prinja
39e58adb99
Randomize seed for SkDiscretePathEffect::filterPath()
...
Fix for https://code.google.com/p/skia/issues/detail?id=2581 . Randomizes
the seed in SkDiscretePathEffect::filterPath(). Prior to this we were
using the path length as a seed.
Now, if we have two different paths with identical contents and we
apply an SkDiscretePathEffect to each, we obtain two different random
paths. Previously, we would obtain two overlapping paths (identical
path contents leading to the same seed).
BUG=skia:
R=reed@google.com , scroggo@google.com
Author: rs.prinja@samsung.com
Review URL: https://codereview.chromium.org/311803002
2014-06-12 22:55:08 -07:00
scroggo
e07c1ab408
Revert of third try at landing improved blur rect; this time with more correctness ( https://codereview.chromium.org/331443003/ )
...
Reason for revert:
Failing layout test: https://storage.googleapis.com/chromium-layout-test-archives/WebKit_Linux/32762/layout-test-results/virtual/gpu/fast/canvas/canvas-draw-canvas-on-canvas-shadow-pretty-diff.html
Original issue's description:
> third try at landing improved blur rect; this time with more correctness
>
> BUG=skia:2095
> R=bsalomon@google.com
> TBR=bsalomon
>
> Committed: https://skia.googlesource.com/skia/+/72abfc2b4e7caead660f6b6a05e60d05eaf1a66f
R=bsalomon@google.com , reed@google.com , humper@google.com
TBR=bsalomon@google.com , humper@google.com , reed@google.com
NOTREECHECKS=true
NOTRY=true
BUG=skia:2095
Author: scroggo@google.com
Review URL: https://codereview.chromium.org/333763002
2014-06-12 12:10:24 -07:00
senorblanco
ce6a354e12
Fix tiled perlin noise.
...
It turns out that the perlin implementation we inherited from WebKit
does not actually generate tileable noise (see Chromium bug
http://crbug.com/383495 ).
The main problem is that when generating coordinates for gradient
interpolation, it was attempting to wrap both x and (x + 1)
simultaneously at the tile boundary (that is, either both or neither
are wrapped). This obviously won't work, since along the tile seams,
(x + 1) should be wrapped, but x should not. The same is true in y.
This patch fixes both the CPU and GPU paths, renames some variables to
more closely match the spec, and modifies the perlin noise GM to
actually test tiling. (Note that the clipping the GM was doing was
removed, since it's superfluous: it used to be necessary for image
filters, but isn't anymore, and this isn't an image filter GM anyway.)
R=sugoi@google.com , sugoi
TBR=senorblanco
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/332523006
2014-06-12 11:24:20 -07:00
humper
72abfc2b4e
third try at landing improved blur rect; this time with more correctness
...
BUG=skia:2095
R=bsalomon@google.com
TBR=bsalomon
Author: humper@google.com
Review URL: https://codereview.chromium.org/331443003
2014-06-11 12:42:49 -07:00
reed
b0b1aa04ed
Revert of second try at landing improved blur rect ( https://codereview.chromium.org/325703002/ )
...
Reason for revert:
broke some fast/canvas layout tests
Original issue's description:
> second try at landing improved blur rect
>
> BUG=skia:2095
> TBR=bsalomon
>
> Committed: https://skia.googlesource.com/skia/+/e9ea0d6b7d59ac3b7e257281e545b24bcc0d2a76
R=bsalomon@google.com , reed@chromium.org , humper@google.com
TBR=bsalomon@google.com , humper@google.com , reed@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=skia:2095
Author: reed@google.com
Review URL: https://codereview.chromium.org/322423002
2014-06-11 07:26:23 -07:00
egdaniel
a22ea18823
Move Dashing filterPath to a dashing utils file
...
From inside GrContext, we have a need to create an SkPath an original path and
some dashing info. We do not have access to the original path effect so we need
a way to make the FilterPath function accessible outside of the effect. So I moved
the core filterPath code (and all need helper functions) out of SkDashPathEffect
and created a SkDashPath in utils to store these helper functions.
BUG=skia:
Committed: https://skia.googlesource.com/skia/+/576dcdc793a762ec63fbecdbfd5768066b548fe5
Author: egdaniel@google.com
Review URL: https://codereview.chromium.org/314623004
2014-06-11 06:51:51 -07:00
dandov
9de5b514d3
SkShader::asNewEffect Refactoring
...
The new signature is:
bool asNewEffect(GrContext* context, const SkPaint& paint, GrColor* grColor, GrEffectRef** grEffect, const SkMatrix* localMatrixOrNull) const;
It will fix the hack for skcolorshader by modifying the GrColor parameter in SkGr::SkPaint2GrPaintShader.
BUG=skia:2646
R=jvanverth@google.com , bsalomon@google.com
Author: dandov@google.com
Review URL: https://codereview.chromium.org/318923005
2014-06-10 14:38:28 -07:00
reed
6c22573edb
hide SkBitmap::setConfig
...
patch from issue 325733002
TBR=scroggo
Author: reed@chromium.org
Review URL: https://codereview.chromium.org/322963002
2014-06-09 19:52:07 -07:00
humper
e9ea0d6b7d
second try at landing improved blur rect
...
BUG=skia:2095
R=bsalomon@google.com
TBR=bsalomon
Author: humper@google.com
Review URL: https://codereview.chromium.org/325703002
2014-06-09 14:35:21 -07:00
egdaniel
8405ef9854
Fix Assert for gpu ConicalTwoPointGradient edgecase to be correct bounds.
...
BUG=skia:
R=bsalomon@google.com
Author: egdaniel@google.com
Review URL: https://codereview.chromium.org/311373003
2014-06-09 11:57:28 -07:00
jvanverth
d78a2fac37
Rollback of fe689c46
and all subsequent changes
...
BUG=skia:
R=humper@google.com
TBR=humper@google.com
NOTRY=True
NOTREECHECKS=True
Author: jvanverth@google.com
Review URL: https://codereview.chromium.org/324463005
2014-06-06 13:40:36 -07:00
humper
9ab6c00f6c
remove extra debug prints
...
BUG=skia:
TBR=jvanverth
NOTRY=True
NOTREECHECKS=True
Author: humper@google.com
Review URL: https://codereview.chromium.org/314423002
2014-06-06 13:28:04 -07:00
humper
39dd491efe
fix 10.6 shader tests
...
BUG=skia:
TBR=jvanverth
NOTRY=True
NOTREECHECKS=True
Author: humper@google.com
Review URL: https://codereview.chromium.org/324543002
2014-06-06 12:55:23 -07:00
humper
e10a4ff45a
repair math error introduced by windows build fix
...
BUG=skia:
TBR=jvanverth
NOTRY=True
NOTREECHECKS=True
Author: humper@google.com
Review URL: https://codereview.chromium.org/320593003
2014-06-06 12:21:03 -07:00
humper
1afc04d877
one channel texture fix for blur shader
...
BUG=skia:
R=bsalomon@google.com
TBR=bsalomon
NOTRY=True
NOTREECHECKS=True
Author: humper@google.com
Review URL: https://codereview.chromium.org/319543007
2014-06-06 11:55:24 -07:00
humper
7bf666a00f
fix blur test
...
BUG=skia:
TBR=jvanverth
NOTRY=True
NOTREECHECKS=True
Author: humper@google.com
Review URL: https://codereview.chromium.org/323583002
2014-06-06 11:22:50 -07:00
humper
fe689c46a7
Faster GPU rect blur that doesn't require computing vertical and horizontal
...
scanlines on the CPU first. Should make extremely large drop shadows fast
again.
BUG=skia:
R=bsalomon@google.com
Author: humper@google.com
Review URL: https://codereview.chromium.org/316273004
2014-06-06 09:48:40 -07:00