(Relanding r7275 with assert fix, plus fixes from r7276, r7280, r7283.)
authorsenorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 18 Jan 2013 20:48:20 +0000 (20:48 +0000)
committersenorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 18 Jan 2013 20:48:20 +0000 (20:48 +0000)
commit3f2d45aff69260fcf39d4eea8586387ed44402bb
tree41bb7d9415bca4ffc6279cc91caedb36b0356790
parent80d447893e9141e986702842ed6a5603670eb837
(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
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