aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects
Commit message (Collapse)AuthorAge
* Disable optimization of certain bit-shift operations on Visual Studio 2010 onlyGravatar epoger@google.com2012-02-02
| | | | | | | to address http://code.google.com/p/skia/issues/detail?id=472 Review URL: https://codereview.appspot.com/5607058 git-svn-id: http://skia.googlecode.com/svn/trunk@3137 2bbb7eff-a529-9590-31e7-b0007b416f81
* rearrange functions to group clamp, repeat, mirror helpers together.Gravatar reed@google.com2012-02-02
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@3135 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add dithering to 32b radial gradients. Behind the same #ifdef as ditheredGravatar tomhudson@google.com2012-02-02
| | | | | | | | | | | 32b linear gradients so that we don't impact clients unexpectedly. This commit *will* break GM. http://codereview.appspot.com/5599050/ git-svn-id: http://skia.googlecode.com/svn/trunk@3126 2bbb7eff-a529-9590-31e7-b0007b416f81
* extend fastbounds impls to include maskfilters and drawloopers. This allowsGravatar reed@google.com2012-01-30
| | | | | | | | | | us to perform quick-rejects when drawing objects with shadows (esp. text). WebKit draws shadows w/ a looper (fg and shadow) and a maskfilter on the shadow layer. git-svn-id: http://skia.googlecode.com/svn/trunk@3103 2bbb7eff-a529-9590-31e7-b0007b416f81
* posix: Avoid static initializers in static/global mutexesGravatar digit@google.com2012-01-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes static initializers related to static and global mutexes from the final library's machine code when building on a pthread-capable system. We use PTHREAD_MUTEX_INITIALIZER to perform POD-style initialization. You need a line like the following to declare a global mutex with it: SkBaseMutex gMutex = { PTHREAD_MUTEX_INITIALIZER }; We introduce the SK_DECLARE_STATIC_MUTEX and SK_DECLARE_GLOBAL_MUTEX macros to be able to declare static/global mutexes in the source tree uniformly. SkMutex is now defined as a sub-class of SkBaseMutex, with standard construction/destruction semantics. This is useful if the mutex object is a member of another C++ class, or allocated dynamically. We also modify a few places to refer to SkBaseMutex instead of a SkMutex, where it makes sense. Generally speaking, client code should hold and use pointers to SkBaseMutex whenever they can now. We defined a new built-time macro named SK_USE_POSIX_THREADS to indicate that we're using a pthread-based SkThread.h interface. The macro will also be used in future patches to implement other helper thread synchronization classes. Finally, we inline the acquire() and release() functions in the case of Posix to improve performance a bit. Running: 'bench -repeat 10 -match mutex' on an Android device or a 2.4GHz Xeon Linux desktop shows the following improvements: Before After Galaxy Nexus 1.64 1.45 Nexus S 1.47 1.16 Xoom 1.86 1.66 Xeon 0.36 0.31 This removes 5 static mutex initializers from the library Review URL: https://codereview.appspot.com/5501066 git-svn-id: http://skia.googlecode.com/svn/trunk@3091 2bbb7eff-a529-9590-31e7-b0007b416f81
* Temporarily allow linear interpolation of 2-color vertical gradients to beGravatar tomhudson@google.com2012-01-20
| | | | | | | | | | | | turned off. With a Chromium gyp change to add SK_SIMPLE_TWOCOLOR_VERTICAL_GRADIENTS, this reduces the rebaselining from r3073 from ~200 to ~20. codereview.appspot.com/5558055/ git-svn-id: http://skia.googlecode.com/svn/trunk@3077 2bbb7eff-a529-9590-31e7-b0007b416f81
* Interpolate vertical linear gradients for improved quality.Gravatar tomhudson@google.com2012-01-18
| | | | | | | | | Consolidate interpolation functions, add new faster more accurate dithering interpolator. git-svn-id: http://skia.googlecode.com/svn/trunk@3072 2bbb7eff-a529-9590-31e7-b0007b416f81
* Create floating-point square root path for 16b mirrored radial gradientsGravatar tomhudson@google.com2012-01-12
| | | | | | | | | | (6x-16x speedup). Create specialized dy=0 path for clamped radial gradients (25% speedup). Make 16b radial gradient proc signature similar to 32b, passing in SkScalar instead of SkFixed and/or SkFloat. git-svn-id: http://skia.googlecode.com/svn/trunk@3030 2bbb7eff-a529-9590-31e7-b0007b416f81
* Convert 32b radial gradient procs to take SkScalar instead ofGravatar tomhudson@google.com2012-01-12
| | | | | | | | | | SkFixed AND SkFloat. http://codereview.appspot.com/5532083/ git-svn-id: http://skia.googlecode.com/svn/trunk@3026 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove obsolete SK_USE_FLOAT_SQRTGravatar tomhudson@google.com2012-01-11
| | | | | | | | http://codereview.appspot.com/5535053/ git-svn-id: http://skia.googlecode.com/svn/trunk@3023 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix the string we're checking for in the #if defined(), so that loops ↵Gravatar tomhudson@google.com2012-01-11
| | | | | | | | | | actually do get unrolled on Windows (15% perf win claimed many months ago). http://codereview.appspot.com/5528078 git-svn-id: http://skia.googlecode.com/svn/trunk@3019 2bbb7eff-a529-9590-31e7-b0007b416f81
* detect (and reject) if radius ia NaN, by using !(radius > 0) instead of ↵Gravatar reed@google.com2012-01-11
| | | | | | (radius <= 0) git-svn-id: http://skia.googlecode.com/svn/trunk@3007 2bbb7eff-a529-9590-31e7-b0007b416f81
* Code cleanup: move gradient inner loops into procs.Gravatar tomhudson@google.com2012-01-09
| | | | | | | | http://codereview.appspot.com/5523048/ git-svn-id: http://skia.googlecode.com/svn/trunk@2988 2bbb7eff-a529-9590-31e7-b0007b416f81
* override asComponentTable()Gravatar mike@reedtribe.org2012-01-07
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2984 2bbb7eff-a529-9590-31e7-b0007b416f81
* Towards enabling -Werror in skia on LinuxGravatar bsalomon@google.com2012-01-06
| | | | | | | | Review URL: http://codereview.appspot.com/5516044/ git-svn-id: http://skia.googlecode.com/svn/trunk@2983 2bbb7eff-a529-9590-31e7-b0007b416f81
* add filterImage() entry-point to SkDevice, to allow it to specialize on ↵Gravatar reed@google.com2012-01-05
| | | | | | | | | | subclasses of SkImageFilter. If that returns false, then the filter itself is invoked. git-svn-id: http://skia.googlecode.com/svn/trunk@2977 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix incorrect use of the SK_RESTRICT macro in SkColorMatrixFilter, and re-enableGravatar senorblanco@chromium.org2012-01-04
| | | | | | | | | | the colormatrix GM test. Review URL: http://codereview.appspot.com/5509048/ git-svn-id: http://skia.googlecode.com/svn/trunk@2963 2bbb7eff-a529-9590-31e7-b0007b416f81
* implement dithering for vertical grads (was a todo:)Gravatar reed@google.com2012-01-04
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2960 2bbb7eff-a529-9590-31e7-b0007b416f81
* Improve the quality of color matrix filters by using SkPremultiplyARGBInline.Gravatar senorblanco@chromium.org2012-01-03
| | | | | | | | | | This is closer (but not exactly the same as) WebKit's implementation. Review URL: http://codereview.appspot.com/5504117/ git-svn-id: http://skia.googlecode.com/svn/trunk@2955 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement the color matrix filter in Ganesh. Also, fix and enable the colorGravatar senorblanco@chromium.org2012-01-03
| | | | | | | | | | | | matrix test slide. This was basically implemented in the same places where the blending-based color filter was being done. The shader simply does a mat4 matrix multiply and a vec4 add. Review URL: http://codereview.appspot.com/5489107/ git-svn-id: http://skia.googlecode.com/svn/trunk@2948 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add SkTableColorFilter, as a foundation for several SVG filtersGravatar mike@reedtribe.org2011-12-28
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2933 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add SkDEBUGFAIL to clean up use of SkASSERT(!"text");Gravatar tomhudson@google.com2011-12-28
| | | | | | | | | | catch a couple of latent SkASSERT("text") bugs. http://codereview.appspot.com/5504090/ git-svn-id: http://skia.googlecode.com/svn/trunk@2926 2bbb7eff-a529-9590-31e7-b0007b416f81
* Unreviewed. Fixing the Windows build, due to a non definition of M_PI.Gravatar schenney@chromium.org2011-12-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2912 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement SkColorFilter::asColorMatrix() virtual, and override inGravatar senorblanco@chromium.org2011-12-20
| | | | | | | | | | | | SkColorMatrixFilter. Implement missing SkColorMatrixFilter::setMatrix() and setArray() functions (were in .h, just not implemented). Add a gm for color matrix filters. Review URL: http://codereview.appspot.com/5500044/ git-svn-id: http://skia.googlecode.com/svn/trunk@2909 2bbb7eff-a529-9590-31e7-b0007b416f81
* A software implementation of the Gaussian blur filter, using 3 box blurs. AlsoGravatar senorblanco@chromium.org2011-12-20
| | | | | | | | | | re-enable the imageblur GM test, since the SkPicture path now works. Review URL: http://codereview.appspot.com/5413048/ git-svn-id: http://skia.googlecode.com/svn/trunk@2905 2bbb7eff-a529-9590-31e7-b0007b416f81
* initial impl of SkImageFilters : virtual signature will change!Gravatar reed@google.com2011-12-20
| | | | | | | | Do not invest too much in other subclasses until this API solidifies. git-svn-id: http://skia.googlecode.com/svn/trunk@2903 2bbb7eff-a529-9590-31e7-b0007b416f81
* add optional manual global initializationGravatar caryclark@google.com2011-12-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | M include/effects/SkAvoidXfermode.h M include/effects/SkDiscretePathEffect.h M include/effects/Sk1DPathEffect.h M include/effects/Sk2DPathEffect.h M include/effects/SkBlurDrawLooper.h M include/effects/SkPixelXorXfermode.h M include/effects/SkDashPathEffect.h M include/effects/SkColorMatrixFilter.h M include/effects/SkEmbossMaskFilter.h M include/effects/SkLayerDrawLooper.h M include/effects/SkGroupShape.h M include/effects/SkBlurImageFilter.h M include/effects/SkRectShape.h A include/effects/SkEffects.h M include/effects/SkCornerPathEffect.h M include/effects/SkGradientShader.h M include/effects/SkBlurMaskFilter.h M include/effects/SkLayerRasterizer.h M include/core/SkMallocPixelRef.h M include/core/SkFlattenable.h M include/core/SkShape.h M include/core/SkPixelRef.h M include/core/SkGraphics.h M include/core/SkPathEffect.h M include/core/SkPostConfig.h M include/core/SkXfermode.h M include/core/SkColorFilter.h M include/images/SkFlipPixelRef.h M include/images/SkImageRef_GlobalPool.h M src/effects/SkDashPathEffect.cpp M src/effects/SkColorMatrixFilter.cpp M src/effects/SkBlurImageFilter.cpp M src/effects/SkGroupShape.cpp M src/effects/SkCornerPathEffect.cpp M src/effects/SkGradientShader.cpp M src/effects/SkBlurMaskFilter.cpp M src/effects/SkAvoidXfermode.cpp M src/effects/Sk2DPathEffect.cpp M src/effects/SkBlurDrawLooper.cpp M src/effects/SkPixelXorXfermode.cpp M src/effects/SkColorFilters.cpp M src/effects/SkLayerDrawLooper.cpp M src/effects/SkRectShape.cpp A src/effects/SkEffects.cpp M src/effects/SkLayerRasterizer.cpp M src/effects/SkDiscretePathEffect.cpp M src/effects/Sk1DPathEffect.cpp A src/effects/SkEffects_none.cpp M src/core/SkPixelRef.cpp M src/core/SkGraphics.cpp M src/core/SkFlattenable.cpp M src/core/SkBitmapProcShader.h M src/core/SkPathEffect.cpp M src/core/SkShape.cpp M src/core/SkXfermode.cpp M src/core/SkMallocPixelRef.cpp M src/core/SkBitmapProcShader.cpp M src/images/SkFlipPixelRef.cpp M src/images/SkImageRef_GlobalPool.cpp A src/ports/SkGlobalInitialization_chromium.cpp M src/ports/SkImageRef_ashmem.h M src/ports/SkImageRef_ashmem.cpp A src/ports/SkGlobalInitialization_default.cpp M gyp/effects.gyp M gyp/tools.gyp M gyp/ports.gyp git-svn-id: http://skia.googlecode.com/svn/trunk@2876 2bbb7eff-a529-9590-31e7-b0007b416f81
* add first cut at arithmetic modeGravatar mike@reedtribe.org2011-12-10
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2849 2bbb7eff-a529-9590-31e7-b0007b416f81
* Adding isOpaque method to skia shader classesGravatar junov@chromium.org2011-12-09
| | | | | | | | | REVIEW=http://codereview.appspot.com/5451102/ TEST=unit test ShaderOpacity git-svn-id: http://skia.googlecode.com/svn/trunk@2840 2bbb7eff-a529-9590-31e7-b0007b416f81
* revert 2826, restore option for non-dithered gradients (used by chrome)Gravatar reed@google.com2011-12-08
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2836 2bbb7eff-a529-9590-31e7-b0007b416f81
* use dithered gradients by defaultGravatar reed@google.com2011-12-08
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2826 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix win compile: sure wish SK_OVERRIDE was testable on mac buildGravatar reed@google.com2011-12-07
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2821 2bbb7eff-a529-9590-31e7-b0007b416f81
* add SK_OVERRIDEsGravatar reed@google.com2011-12-07
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2820 2bbb7eff-a529-9590-31e7-b0007b416f81
* Unroll loops in SkBlurMask for speedup on Windows (benchmarks should seeGravatar tomhudson@google.com2011-11-28
| | | | | | | | 15% on interpolated blurs, 5-10% on simple blurs). git-svn-id: http://skia.googlecode.com/svn/trunk@2755 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add fractional-radius blurs to blur benchmark.Gravatar tomhudson@google.com2011-11-22
| | | | | | | | | Specialize loops in apply_kernel and apply_kernel_interp, improving blur benchmark performance by 25%. git-svn-id: http://skia.googlecode.com/svn/trunk@2731 2bbb7eff-a529-9590-31e7-b0007b416f81
* ensure we never change the text_encoding of the master paint, since it is usedGravatar reed@google.com2011-11-21
| | | | | | | | to interpret the text/length parameters in draw[Pos]Text. git-svn-id: http://skia.googlecode.com/svn/trunk@2724 2bbb7eff-a529-9590-31e7-b0007b416f81
* This change makes SkImageFilter and SkBlurImageFilter flattenable/unflattenable.Gravatar senorblanco@chromium.org2011-11-16
| | | | | | | | | The imageblur test also needed to stop calling getDeviceSize(), since it was returning 99999x99999 for the SkPicture case. git-svn-id: http://skia.googlecode.com/svn/trunk@2699 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement Gaussian blurs for images. The caller creates an anGravatar senorblanco@chromium.org2011-11-09
| | | | | | | | | | | | | | | | | | SkBlurImageFilter, sets it on an SkPaint, passes that paint to saveLayer(), draws the primitives which are to be blurred, then calls restore(), which applies the blur. The blurs have separate sizes in the horizontal and vertical direction. This feature is GPU-only for now. NB: Due to the clipping change, there are slight pixel differences on the blurs_gpu and shadows_gpu tests, so those will require rebaselining on all platforms, as will some of the WebKit layout tests (TBD). Review URL: http://codereview.appspot.com/5322068/ git-svn-id: http://skia.googlecode.com/svn/trunk@2643 2bbb7eff-a529-9590-31e7-b0007b416f81
* Update files to use SK_BUILD_FOR_ANDROID.Gravatar djsollen@google.com2011-11-08
| | | | | | | | This CL also removes any unecessary references to the ANDROID definition. Review URL: http://codereview.appspot.com/5354049 git-svn-id: http://skia.googlecode.com/svn/trunk@2629 2bbb7eff-a529-9590-31e7-b0007b416f81
* enable soft clipping (yikes)Gravatar reed@google.com2011-10-24
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2515 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make asBlur method const.Gravatar bungeman@google.com2011-10-04
| | | | | | | | | http://codereview.appspot.com/5190041/ This change makes asBlur const consistent with SkShader::asAGradient and asABitmap. git-svn-id: http://skia.googlecode.com/svn/trunk@2404 2bbb7eff-a529-9590-31e7-b0007b416f81
* Now that layout tests are fixed, remove flag to ignore margin fix.Gravatar bungeman@google.com2011-10-04
| | | | | | | http://codereview.appspot.com/5186044/ git-svn-id: http://skia.googlecode.com/svn/trunk@2403 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add SK_RESTRICT inside radial gradient shader - we can't currently see a ↵Gravatar tomhudson@google.com2011-09-30
| | | | | | benefit, but it shouldn't hurt, and some compiler somewhere ought to benefit from it. git-svn-id: http://skia.googlecode.com/svn/trunk@2383 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make SkMath.h less visible in public header files.Gravatar tomhudson@google.com2011-09-27
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2340 2bbb7eff-a529-9590-31e7-b0007b416f81
* Optimize software radial gradients (remove branches from the inner loop whereGravatar tomhudson@google.com2011-09-26
| | | | | | | | | | we can, because an entire row is conservatively either outside or inside the gradient.) Change the gradient benchmark to capture both cases, and add new gm to detect errors in these optimized paths. git-svn-id: http://skia.googlecode.com/svn/trunk@2327 2bbb7eff-a529-9590-31e7-b0007b416f81
* speed up radial-mirror 16x, sweep by ~2xGravatar reed@google.com2011-09-21
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2294 2bbb7eff-a529-9590-31e7-b0007b416f81
* add SK_RESTRICT in shadeSpan methodsGravatar reed@google.com2011-09-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2288 2bbb7eff-a529-9590-31e7-b0007b416f81
* Ignore blur margin fix flag for backward bug compatibility.Gravatar bungeman@google.com2011-09-06
| | | | | | | http://codereview.appspot.com/4981046/ git-svn-id: http://skia.googlecode.com/svn/trunk@2219 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reduce size of filter mask.Gravatar bungeman@google.com2011-09-02
| | | | | | | | | http://codereview.appspot.com/4965057/ Reduce the size of filter masks, fix HQ blur when clipped, and add tests. git-svn-id: http://skia.googlecode.com/svn/trunk@2211 2bbb7eff-a529-9590-31e7-b0007b416f81
* style cleanupGravatar reed@google.com2011-08-12
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2104 2bbb7eff-a529-9590-31e7-b0007b416f81