aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/effects
Commit message (Collapse)AuthorAge
* This changes the signature of SkImageFilter::filterImageGPU() to use ↵Gravatar senorblanco@chromium.org2013-01-30
| | | | | | | | | | 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
* Added toString to SkDrawLooper-derived classesGravatar robertphillips@google.com2013-01-28
| | | | | | | | https://codereview.appspot.com/7195054/ git-svn-id: http://skia.googlecode.com/svn/trunk@7422 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2013-01-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7406 2bbb7eff-a529-9590-31e7-b0007b416f81
* add optional cull-rect to patheffects, so they can do less work if their resultsGravatar reed@google.com2013-01-24
| | | | | | | 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
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2013-01-23
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7332 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added toString to SkXfermode-derived classes (for debugger) Gravatar robertphillips@google.com2013-01-22
| | | | | | | | https://codereview.appspot.com/7139058/ git-svn-id: http://skia.googlecode.com/svn/trunk@7308 2bbb7eff-a529-9590-31e7-b0007b416f81
* (Relanding r7275 with assert fix, plus fixes from r7276, r7280, r7283.)Gravatar senorblanco@chromium.org2013-01-18
| | | | | | | | | | | | 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
* Reverting chain of SkBicubicImageFilter changes (7275, 7276, 7280 & 7283)Gravatar robertphillips@google.com2013-01-18
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7285 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement a bicubic resampling image filter, with raster and GPU backends.Gravatar senorblanco@chromium.org2013-01-18
| | | | | | | | | 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
* Wrap GrEffects in GrEffectPtr.Gravatar bsalomon@google.com2013-01-16
| | | | | | | | | 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
* Added print out of SkShader information to debuggerGravatar robertphillips@google.com2013-01-15
| | | | | | | | https://codereview.appspot.com/7105045/ git-svn-id: http://skia.googlecode.com/svn/trunk@7201 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implementation of the displacement effect (both CPU and GPU)Gravatar sugoi@google.com2013-01-15
| | | | | | | 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
* Rename onFilterImageGPU to filterImageGPU(), to match skia convention. No ↵Gravatar senorblanco@chromium.org2013-01-10
| | | | | | | | | | 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
* fix warnings related to constness in overrides of SkColorFilterGravatar mike@reedtribe.org2012-12-24
| | | | | | | | update samples for circle testing git-svn-id: http://skia.googlecode.com/svn/trunk@6943 2bbb7eff-a529-9590-31e7-b0007b416f81
* change SkMaskFilter methods to const, in preparation for making the class asGravatar reed@google.com2012-12-18
| | | | | | | 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
* change all interfaces for SkRasterizer to const, in preparation for marking itGravatar reed@google.com2012-12-18
| | | | | | | 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
* change all patheffect methods to const, in preparation for marking itsGravatar reed@google.com2012-12-18
| | | | | | | 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
* Make all colorfilter methods const, in preparation for declaring themGravatar reed@google.com2012-12-17
| | | | | | to be immutable and reentrant-safe git-svn-id: http://skia.googlecode.com/svn/trunk@6856 2bbb7eff-a529-9590-31e7-b0007b416f81
* Mark all methods on SkXfermode as const, in preparation for declaring allGravatar reed@google.com2012-12-17
| | | | | | | 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
* Pull SkMergeImageFilter out into its own file.Gravatar senorblanco@chromium.org2012-12-04
| | | | | | Review URL: https://codereview.appspot.com/6873052 git-svn-id: http://skia.googlecode.com/svn/trunk@6662 2bbb7eff-a529-9590-31e7-b0007b416f81
* Modify the blur bench to add tests for high-quality blurs, and large ↵Gravatar senorblanco@chromium.org2012-11-29
| | | | | | | | | | 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
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2012-11-29
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@6594 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added dashing fast pathGravatar robertphillips@google.com2012-11-28
| | | | | | | | https://codereview.appspot.com/6844067/ git-svn-id: http://skia.googlecode.com/svn/trunk@6585 2bbb7eff-a529-9590-31e7-b0007b416f81
* change SkDrawFilter::filter to return a bool, where false means don't-drawGravatar reed@google.com2012-11-26
| | | | | | Review URL: https://codereview.appspot.com/6851111 git-svn-id: http://skia.googlecode.com/svn/trunk@6551 2bbb7eff-a529-9590-31e7-b0007b416f81
* Separable mask blurs: Add compile-time flag. Fix reversed offsets in ↵Gravatar senorblanco@chromium.org2012-11-20
| | | | | | | | 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
* Break out SkOffsetImageFilter into its own file, and derive it fromGravatar senorblanco@chromium.org2012-11-06
| | | | | | | | 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
* Add a factory Create function for SkColorFilterImageFilter, and move the ↵Gravatar senorblanco@chromium.org2012-10-26
| | | | | | | | 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
* GrCustomStage Renaming Part 5Gravatar bsalomon@google.com2012-10-25
| | | | | | | | | 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
* GrCustomStage Renaming Part 4Gravatar bsalomon@google.com2012-10-24
| | | | | | | Rename a bunch of things found by searching for "custom". Review URL: https://codereview.appspot.com/6765048 git-svn-id: http://skia.googlecode.com/svn/trunk@6085 2bbb7eff-a529-9590-31e7-b0007b416f81
* CustomStage Renaming Part 1Gravatar bsalomon@google.com2012-10-24
| | | | | | | | | | | | | | | | | | | Search and replace: GrCustomStage->GrEffect GrCustomStageTestFactory->GrEffectTestFactory renamed the cpp/h files from customStage->effect reordered gypi, #includes, forward decls to maintain alphabetical sort. manually fixed up some whitespace and linewraps deleted a commented out #include R=robertphillips@google.com Review URL: https://codereview.appspot.com/6758046 git-svn-id: http://skia.googlecode.com/svn/trunk@6076 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove use of varargs in SkImageFilter. This is causing a crash in recentGravatar senorblanco@chromium.org2012-10-22
| | | | | | | | | builds of clang. (It was also masking the fact that SkMergeImageFilter was calling the wrong constructor!) Review URL: https://codereview.appspot.com/6709066 git-svn-id: http://skia.googlecode.com/svn/trunk@6029 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use GrCustomStage to implement color matrix.Gravatar bsalomon@google.com2012-10-17
| | | | | | | R=robertphillips@google.com Review URL: https://codereview.appspot.com/6716044 git-svn-id: http://skia.googlecode.com/svn/trunk@5975 2bbb7eff-a529-9590-31e7-b0007b416f81
* When two or more color matrix image filters are connected together, and the ↵Gravatar senorblanco@chromium.org2012-10-12
| | | | | | | | non-leaf matrices do not require clamping, we can concatenate their matrices and apply them together. Review URL: https://codereview.appspot.com/6489054 git-svn-id: http://skia.googlecode.com/svn/trunk@5931 2bbb7eff-a529-9590-31e7-b0007b416f81
* Export effects classes with SK_API.Gravatar tfarina@chromium.org2012-10-12
| | | | | | | | | | | | | So this works in shared_library build in chromium. This issue was raised up in the following chromium-dev thread: https://groups.google.com/a/chromium.org/forum/?hl=en&fromgroups=#!topic/chromium-dev/Z6qzEw8MwVY R=epoger@google.com,tomhudson@google.com Review URL: https://codereview.appspot.com/6601065 git-svn-id: http://skia.googlecode.com/svn/trunk@5914 2bbb7eff-a529-9590-31e7-b0007b416f81
* This patch implements generalized DAG connectivity for SkImageFilter. ↵Gravatar senorblanco@chromium.org2012-10-10
| | | | | | | | | | SkImageFilter maintains a list of inputs, which can be constructed either from a SkImageFilter** or zero or more SkImageFilter* arguments (varargs). Existing filters which maintained their own filter connectivity were refactored to use the new constructors and flattening/unflattening code. Modifying the remaining filters which are not yet DAG-friendly is left for future work; they are considered to have zero inputs for now. Review URL: https://codereview.appspot.com/6443119 git-svn-id: http://skia.googlecode.com/svn/trunk@5891 2bbb7eff-a529-9590-31e7-b0007b416f81
* Change SkLightingImageFilter to derive from SkSingleInputImageFilter, so ↵Gravatar senorblanco@chromium.org2012-10-05
| | | | | | | | | | that it can participate in filter DAGs. No tests yet. Review URL: https://codereview.appspot.com/6620055 git-svn-id: http://skia.googlecode.com/svn/trunk@5832 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement GPU path for matrix convolution. Note that when not convolving alpha,Gravatar senorblanco@chromium.org2012-10-04
| | | | | | | | | | | | | | | | | | | | the premultiplying is done less efficiently than in the raster path: it's done on each texture access, rather than as a pre-processing pass. This was so I could do the filter as a single custom stage; will try the optimization separately. This implementation gives a ~30X speedup on the GPU results for the matrixconvolution bench (~10X due to the GPU, and ~3X due to texture uploads/readback removal). Note: this changes the matrixconvolution for the software path as well, so it will likely break the bots until that test is rebaselined. Review URL: https://codereview.appspot.com/6585069/ git-svn-id: http://skia.googlecode.com/svn/trunk@5809 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix recursive GPU processing for SkImageFilter. Plumb through theGravatar senorblanco@chromium.org2012-09-27
| | | | | | | | | | | SkImageFilter::Proxy parameter to the GPU recursion path. Extract DeviceImageFilterProxy from SkCanvas.cpp into its own .h, and rename it. https://codereview.appspot.com/6575059/ git-svn-id: http://skia.googlecode.com/svn/trunk@5720 2bbb7eff-a529-9590-31e7-b0007b416f81
* This patch adds support for optional processing of the alpha channel inGravatar senorblanco@chromium.org2012-09-25
| | | | | | | | | | | | | | the matrix convolution filter. Test cases are added to the GM and the bench. NOTE: This will require rebaselining the matrixconvolution GM, so it will likely turn the bots red until that is done. https://codereview.appspot.com/6547049/ git-svn-id: http://skia.googlecode.com/svn/trunk@5661 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2012-09-19
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5594 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implements a matrix convolution filter (raster path only). The filtering loopGravatar senorblanco@chromium.org2012-09-18
| | | | | | | | | | | | is templated on the tiling mode for speed: interior pixels are unconditionally fetched; border pixels apply the appropriate tiling mode before fetching. It handles target, bias, divisor (as gain), and edge modes (named to be more skia-like). It does not handle the "preserveAlpha" semantics of feConvolveMatrix, nor "kernelUnitLength". git-svn-id: http://skia.googlecode.com/svn/trunk@5592 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make texteffects gm work through serialization and pipe.Gravatar scroggo@google.com2012-09-12
| | | | | | | | | | | | | | | Move Line2DPathEffect (now Sk_) into a separate header file so it can be shared and initialized. Switch to the shared version in SampleAll and SampleSlides. Remove the skip pipe flag from texteffects, since it can now be serialized. I have a separate change to turn serialization on by default at https://codereview.appspot.com/6498121/ Review URL: https://codereview.appspot.com/6503106 git-svn-id: http://skia.googlecode.com/svn/trunk@5512 2bbb7eff-a529-9590-31e7-b0007b416f81
* Result of running tools/sanitize_source_files.py (which was added in ↵Gravatar rmistry@google.com2012-08-23
| | | | | | | | | https://codereview.appspot.com/6465078/) This CL is part I of IV (I broke down the 1280 files into 4 CLs). Review URL: https://codereview.appspot.com/6485054 git-svn-id: http://skia.googlecode.com/svn/trunk@5262 2bbb7eff-a529-9590-31e7-b0007b416f81
* warning fix (unreviewed).Gravatar senorblanco@chromium.org2012-08-23
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5258 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move the code for the GPU implementation of morphology effects from GrContextGravatar senorblanco@chromium.org2012-08-22
| | | | | | | | | | and GrMorphologyEffect.* into SkMorphologyImageFilter.cpp. Review URL: https://codereview.appspot.com/6458065/ git-svn-id: http://skia.googlecode.com/svn/trunk@5241 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implements the non-Porter-Duff compositing modes required for SVG's feBlendGravatar senorblanco@chromium.org2012-08-22
| | | | | | | | | | | | element. This filter has two inputs, since normal blending can't be used. The GPU side uses two filter stages to accomplish this: one to sample the background, and one to sample the foreground and blend it. Review URL: https://codereview.appspot.com/6463081/ git-svn-id: http://skia.googlecode.com/svn/trunk@5231 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move SkColorFilterImageFilter into its own file.Gravatar senorblanco@chromium.org2012-08-20
| | | | | | | | Review URL: https://codereview.appspot.com/6463072/ git-svn-id: http://skia.googlecode.com/svn/trunk@5197 2bbb7eff-a529-9590-31e7-b0007b416f81
* Refactor SkImageFilter into its own .cpp file.Gravatar senorblanco@chromium.org2012-08-20
| | | | | | | | Review URL: https://codereview.appspot.com/6465073/ git-svn-id: http://skia.googlecode.com/svn/trunk@5188 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implements a new class, SkSingleInputImageFilter, to handle DAG connectivityGravatar senorblanco@chromium.org2012-08-20
| | | | | | | | | | | | | | | | | | | | | for filters with a single image input. This provides functionality to store, flatten and unflatten a single SkImageFilter input, as well as to recursively evaluate it on the CPU or GPU. The following classes were re-parented to implement DAG connectivity: SkBlurImageFilter, SkDilateImageFilter, SkErodeImageFilter, SkColorFilterImageFilter. The constructors for each have been appended with a new parameter, representing the input filter (default NULL). This change also implements an arbitrary SkBitmap input source for filtering, SkBitmapSource. NOTE: This CL will require gyp file changes when rolling past this revision. Review URL: https://codereview.appspot.com/6462071/ git-svn-id: http://skia.googlecode.com/svn/trunk@5170 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add a zoom filter to Skia. This will be used on ChromeOS to implement the ↵Gravatar bsalomon@google.com2012-08-13
| | | | | | | | | | | screen magnifier. Committed on behalf of zork@chromium.org Review URL: http://codereview.appspot.com/6354065/ git-svn-id: http://skia.googlecode.com/svn/trunk@5056 2bbb7eff-a529-9590-31e7-b0007b416f81