summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorsenorblanco@chromium.org <senorblanco@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-07 03:38:11 +0000
committersenorblanco@chromium.org <senorblanco@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-07 03:38:11 +0000
commitc1d6c08dcb13298002916832f9e0c7927bf9e9cd (patch)
tree9c2080b66f871ad4f981f84d1867520290d140e8 /cc
parent0308dc9292cb38bf7c62ed855776d19fdd1687f4 (diff)
downloadchromium_src-c1d6c08dcb13298002916832f9e0c7927bf9e9cd.zip
chromium_src-c1d6c08dcb13298002916832f9e0c7927bf9e9cd.tar.gz
chromium_src-c1d6c08dcb13298002916832f9e0c7927bf9e9cd.tar.bz2
Fix Y-flipped lighting in accelerated SVG reference filters in CSS. Since the compositor draws all quads as origin-TopLeft, but Skia expects all render targets (and external textures) to be origin-BottomLeft, accelerated filters were being Y-flipped twice. Since all of the CSS filters have symmetrical parameters, no-one noticed. However, SVG filters (e.g., feSpecularLighting) have parameters which are not symmetrical in Y, so the lighting appeared upside-down.
Now that we have support in Skia for origin-TopLeft render targets, mark both the textures and render targets as origin-TopLeft, to reflect the compositor's convention. BUG: See webkit.org/b/104289 Review URL: https://chromiumcodereview.appspot.com/12217047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181178 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r--cc/gl_renderer.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/cc/gl_renderer.cc b/cc/gl_renderer.cc
index 6643a20..1b48615 100644
--- a/cc/gl_renderer.cc
+++ b/cc/gl_renderer.cc
@@ -422,6 +422,7 @@ static SkBitmap applyImageFilter(GLRenderer* renderer, SkImageFilter* filter, Sc
backendTextureDescription.fHeight = sourceTexture->size().height();
backendTextureDescription.fConfig = kSkia8888_GrPixelConfig;
backendTextureDescription.fTextureHandle = lock.textureId();
+ backendTextureDescription.fOrigin = kTopLeft_GrSurfaceOrigin;
skia::RefPtr<GrTexture> texture = skia::AdoptRef(grContext->wrapBackendTexture(backendTextureDescription));
// Place the platform texture inside an SkBitmap.
@@ -437,6 +438,7 @@ static SkBitmap applyImageFilter(GLRenderer* renderer, SkImageFilter* filter, Sc
desc.fWidth = source.width();
desc.fHeight = source.height();
desc.fConfig = kSkia8888_GrPixelConfig;
+ desc.fOrigin = kTopLeft_GrSurfaceOrigin;
GrAutoScratchTexture scratchTexture(grContext, desc, GrContext::kExact_ScratchTexMatch);
skia::RefPtr<GrTexture> backingStore = skia::AdoptRef(scratchTexture.detach());