Implement a bicubic resampling image filter, with raster and GPU backends.
authorsenorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 18 Jan 2013 17:29:15 +0000 (17:29 +0000)
committersenorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 18 Jan 2013 17:29:15 +0000 (17:29 +0000)
commit744820e6576ec255c9454a561f21e2ef94e891ba
tree733e468c3e74ab469de1cdd8d7c617e6ac16f2b3
parentca98b3106f82384034f810c1333ac10a583c2aa9
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
gm/bicubicfilter.cpp [new file with mode: 0644]
gyp/effects.gypi
gyp/gmslides.gypi
include/effects/SkBicubicImageFilter.h [new file with mode: 0644]
src/effects/SkBicubicImageFilter.cpp [new file with mode: 0644]
src/gpu/SkGpuDevice.cpp
src/ports/SkGlobalInitialization_default.cpp