diff options
author | senorblanco@chromium.org <senorblanco@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-07 03:38:11 +0000 |
---|---|---|
committer | senorblanco@chromium.org <senorblanco@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-07 03:38:11 +0000 |
commit | c1d6c08dcb13298002916832f9e0c7927bf9e9cd (patch) | |
tree | 9c2080b66f871ad4f981f84d1867520290d140e8 /cc | |
parent | 0308dc9292cb38bf7c62ed855776d19fdd1687f4 (diff) | |
download | chromium_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.cc | 2 |
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()); |