Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(872)

Unified Diff: Source/core/rendering/FilterEffectRenderer.cpp

Issue 104023007: Refactoring ImageBuffer to decouple it from Canvas2DLayerBridge (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: build fixes for win+mac Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/FilterEffectRenderer.cpp
diff --git a/Source/core/rendering/FilterEffectRenderer.cpp b/Source/core/rendering/FilterEffectRenderer.cpp
index 03556781265670816e053f4dd72b5f8b531f4995..67a8bacc959b926d524567bc07a4611381b5a0c4 100644
--- a/Source/core/rendering/FilterEffectRenderer.cpp
+++ b/Source/core/rendering/FilterEffectRenderer.cpp
@@ -40,6 +40,7 @@
#include "core/platform/graphics/filters/custom/CustomFilterValidatedProgram.h"
#include "core/platform/graphics/filters/custom/FECustomFilter.h"
#include "core/platform/graphics/filters/custom/ValidatedCustomFilterOperation.h"
+#include "core/platform/graphics/gpu/AcceleratedImageBufferSurface.h"
#include "core/rendering/RenderLayer.h"
#include "core/rendering/RenderView.h"
#include "core/rendering/svg/ReferenceFilterBuilder.h"
@@ -48,6 +49,7 @@
#include "platform/FloatConversion.h"
#include "platform/LengthFunctions.h"
#include "platform/graphics/ColorSpace.h"
+#include "platform/graphics/UnacceleratedImageBufferSurface.h"
#include "wtf/MathExtras.h"
#include <algorithm>
@@ -311,8 +313,18 @@ void FilterEffectRenderer::allocateBackingStoreIfNeeded()
// buffer if we have not yet done so.
if (!m_graphicsBufferAttached) {
IntSize logicalSize(m_sourceDrawingRegion.width(), m_sourceDrawingRegion.height());
- if (!sourceImage() || sourceImage()->logicalSize() != logicalSize)
- setSourceImage(ImageBuffer::create(logicalSize, 1, renderingMode()));
+ if (!sourceImage() || sourceImage()->logicalSize() != logicalSize) {
+ OwnPtr<ImageBufferSurface> surface;
+ if (isAccelerated()) {
+ surface = adoptPtr(new AcceleratedImageBufferSurface(logicalSize));
+ }
+ if (!surface || !surface->isValid()) {
+ surface = adoptPtr(new UnacceleratedImageBufferSurface(logicalSize));
+ }
+ if (surface->isValid()) {
+ setSourceImage(adoptPtr(new ImageBuffer(surface.release())));
+ }
+ }
m_graphicsBufferAttached = true;
}
}

Powered by Google App Engine
This is Rietveld 408576698