qtwebkit/0011-Texmap-CSS-filter-not-...

88 lines
4.2 KiB
Diff

From dbc927aa59d0025f8aecec77d92a3d5166ecc644 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@digia.com>
Date: Thu, 17 Oct 2013 16:52:00 +0200
Subject: [PATCH 11/20] [Texmap] CSS filter not working on software composited
layers https://bugs.webkit.org/show_bug.cgi?id=122159
Reviewed by Noam Rosenthal.
Tell the rendering layer we do not support CSS filters when we do not. This
will make RenderLayer fall back to using its own software implementation.
* platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
(WebCore::GraphicsLayerTextureMapper::setFilters):
* platform/graphics/texmap/TextureMapperImageBuffer.cpp:
(WebCore::BitmapTextureImageBuffer::applyFilters):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156710 268f45cc-cd09-0410-ab3c-d52691b4dbfc
---
LayoutTests/platform/qt-4.8/TestExpectations | 3 ---
Source/WebCore/ChangeLog | 15 +++++++++++++++
.../graphics/texmap/GraphicsLayerTextureMapper.cpp | 4 ++++
.../platform/graphics/texmap/TextureMapperImageBuffer.cpp | 11 -----------
4 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index e70115f..f0ebd4c 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,18 @@
+2013-10-01 Allan Sandfeld Jensen <allan.jensen@digia.com>
+
+ [Texmap] CSS filter not working on software composited layers
+ https://bugs.webkit.org/show_bug.cgi?id=122159
+
+ Reviewed by Noam Rosenthal.
+
+ Tell the rendering layer we do not support CSS filters when we do not. This
+ will make RenderLayer fall back to using its own software implementation.
+
+ * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
+ (WebCore::GraphicsLayerTextureMapper::setFilters):
+ * platform/graphics/texmap/TextureMapperImageBuffer.cpp:
+ (WebCore::BitmapTextureImageBuffer::applyFilters):
+
2013-09-17 Michael Brüning <michael.bruning@digia.com>
Correct range used for Emoji checks.
diff --git a/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp b/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp
index 364ddd2..bc71371 100644
--- a/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp
+++ b/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp
@@ -573,6 +573,10 @@ void GraphicsLayerTextureMapper::setDebugBorder(const Color& color, float width)
#if ENABLE(CSS_FILTERS)
bool GraphicsLayerTextureMapper::setFilters(const FilterOperations& filters)
{
+ TextureMapper* textureMapper = m_layer->textureMapper();
+ // TextureMapperImageBuffer does not support CSS filters.
+ if (!textureMapper || textureMapper->accelerationMode() == TextureMapper::SoftwareMode)
+ return false;
notifyChange(TextureMapperLayer::FilterChange);
return GraphicsLayer::setFilters(filters);
}
diff --git a/Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.cpp b/Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.cpp
index e01ed3d..112c795 100644
--- a/Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.cpp
+++ b/Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.cpp
@@ -167,17 +167,6 @@ void TextureMapperImageBuffer::drawSolidColor(const FloatRect& rect, const Trans
#if ENABLE(CSS_FILTERS)
PassRefPtr<BitmapTexture> BitmapTextureImageBuffer::applyFilters(TextureMapper*, const BitmapTexture& contentTexture, const FilterOperations& filters)
{
- RefPtr<FilterEffectRenderer> renderer = FilterEffectRenderer::create();
- renderer->setSourceImageRect(FloatRect(FloatPoint::zero(), contentTexture.size()));
-
- // The document parameter is only needed for CSS shaders.
- if (renderer->build(0 /*document */, filters)) {
- renderer->allocateBackingStoreIfNeeded();
- GraphicsContext* context = renderer->inputContext();
- context->drawImageBuffer(static_cast<const BitmapTextureImageBuffer&>(contentTexture).m_image.get(), ColorSpaceDeviceRGB, IntPoint::zero());
- renderer->apply();
- m_image->context()->drawImageBuffer(renderer->output(), ColorSpaceDeviceRGB, renderer->outputRect());
- }
return this;
}
#endif
--
1.8.5.3