Diff
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog 2015-10-13 09:35:51 UTC (rev 190938)
@@ -1,3 +1,100 @@
+2015-09-22 Tim Horton <[email protected]>
+
+ Make it more obvious when using an unaccelerated image buffer, and fix a few callers who do
+ https://bugs.webkit.org/show_bug.cgi?id=149428
+
+ Reviewed by Simon Fraser and Darin Adler.
+
+ * platform/graphics/ImageBuffer.cpp:
+ (WebCore::ImageBuffer::createCompatibleBuffer):
+ * platform/graphics/ImageBuffer.h:
+ (WebCore::ImageBuffer::create):
+ Make the RenderingMode parameter to ImageBuffer::create non-optional.
+
+ * platform/graphics/GraphicsContext.h:
+ (WebCore::GraphicsContext::renderingMode):
+ * platform/graphics/GraphicsTypes.h:
+ Add renderingMode() getter so that every caller doesn't need to do the conversion to RenderingMode.
+
+ * css/CSSFilterImageValue.cpp:
+ (WebCore::CSSFilterImageValue::image):
+ * html/canvas/WebGLRenderingContextBase.cpp:
+ (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer):
+ * rendering/shapes/Shape.cpp:
+ (WebCore::Shape::createRasterShape):
+ * html/shadow/MediaControlElements.cpp:
+ (WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):
+ * platform/graphics/cg/ImageBufferCG.cpp:
+ (WebCore::ImageBuffer::putByteArray):
+ These five callers create unconditionally unaccelerated ImageBuffers which
+ should probably instead respect the acceleration bit from the context
+ that the ImageBuffer will eventually be painted into. Bugs have been filed.
+
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::createImageBuffer):
+ * html/canvas/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::createCompositingBuffer):
+ * platform/graphics/CrossfadeGeneratedImage.cpp:
+ (WebCore::CrossfadeGeneratedImage::drawPattern):
+ Adjust the argument order and remove defaults which are passed explicitly.
+
+ * page/FrameSnapshotting.cpp:
+ (WebCore::snapshotFrameRect):
+ Snapshots are (currently) meant to be taken without accelerated drawing.
+ Make this explicit.
+
+ * platform/graphics/BitmapImage.cpp:
+ (WebCore::BitmapImage::drawPattern):
+ Make use of createCompatibleBuffer. This caller was previously creating
+ an unconditionally unaccelerated context!
+
+ * platform/graphics/NamedImageGeneratedImage.cpp:
+ (WebCore::NamedImageGeneratedImage::drawPattern):
+ Remove a comment.
+
+ * platform/graphics/ShadowBlur.cpp:
+ (WebCore::ScratchBuffer::getScratchBuffer):
+ ShadowBlur is only used with unaccelerated contexts, so it's OK to hardcode Unaccelerated here.
+
+ * platform/graphics/filters/FilterEffect.cpp:
+ (WebCore::FilterEffect::asImageBuffer):
+ (WebCore::FilterEffect::createImageBufferResult):
+ Flip the order of the arguments.
+
+ (WebCore::FilterEffect::openCLImageToImageBuffer):
+ This caller was previously creating an unaccelerated buffer; instead, match the destination buffer.
+
+ * rendering/FilterEffectRenderer.cpp:
+ (WebCore::FilterEffectRenderer::allocateBackingStoreIfNeeded):
+ Adjust the argument order and remove defaults which are passed explicitly.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::calculateClipRects):
+ Get rid of the unneeded renderingMode local, and factor out retrieval of Frame.
+
+ * rendering/svg/RenderSVGResourceClipper.cpp:
+ (WebCore::RenderSVGResourceClipper::applyClippingToContext):
+ * rendering/svg/RenderSVGResourceMasker.cpp:
+ (WebCore::RenderSVGResourceMasker::applyResource):
+ These two callers are unconditionally creating unaccelerated buffers,
+ and changing this to match the destination context seems to actually
+ break things. This needs further investigation.
+
+ * rendering/svg/RenderSVGResourceGradient.cpp:
+ (WebCore::createMaskAndSwapContextForTextGradient):
+ This caller was previously creating an unaccelerated buffer; instead, match the destination buffer.
+
+ * rendering/svg/RenderSVGResourcePattern.cpp:
+ (WebCore::RenderSVGResourcePattern::buildPattern):
+ Make use of renderingMode().
+
+ * rendering/svg/SVGRenderingContext.cpp:
+ (WebCore::SVGRenderingContext::createImageBuffer):
+ Adjust the argument order.
+
+ * svg/graphics/SVGImage.cpp:
+ (WebCore::SVGImage::nativeImageForCurrentFrame):
+
2015-09-22 sangdeug.kim <[email protected]>
CurrentTime on mediaController is set as 0 when playback is completed.
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/css/CSSFilterImageValue.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/css/CSSFilterImageValue.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/css/CSSFilterImageValue.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -120,7 +120,8 @@
return Image::nullImage();
// Transform Image into ImageBuffer.
- std::unique_ptr<ImageBuffer> texture = ImageBuffer::create(size);
+ // FIXME (149424): This buffer should not be unconditionally unaccelerated.
+ std::unique_ptr<ImageBuffer> texture = ImageBuffer::create(size, Unaccelerated);
if (!texture)
return Image::nullImage();
texture->context()->drawImage(image, ColorSpaceDeviceRGB, IntPoint());
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/html/HTMLCanvasElement.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/html/HTMLCanvasElement.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/html/HTMLCanvasElement.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -577,7 +577,7 @@
return;
RenderingMode renderingMode = shouldAccelerate(bufferSize) ? Accelerated : Unaccelerated;
- m_imageBuffer = ImageBuffer::create(size(), 1, ColorSpaceDeviceRGB, renderingMode);
+ m_imageBuffer = ImageBuffer::create(size(), renderingMode);
if (!m_imageBuffer)
return;
m_imageBuffer->context()->setShadowsIgnoreTransforms(true);
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -1684,8 +1684,7 @@
std::unique_ptr<ImageBuffer> CanvasRenderingContext2D::createCompositingBuffer(const IntRect& bufferRect)
{
- RenderingMode renderMode = isAccelerated() ? Accelerated : Unaccelerated;
- return ImageBuffer::create(bufferRect.size(), 1, ColorSpaceDeviceRGB, renderMode);
+ return ImageBuffer::create(bufferRect.size(), isAccelerated() ? Accelerated : Unaccelerated);
}
void CanvasRenderingContext2D::compositeBuffer(ImageBuffer* buffer, const IntRect& bufferRect, CompositeOperator op)
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -4880,7 +4880,8 @@
return buf;
}
- std::unique_ptr<ImageBuffer> temp = ImageBuffer::create(size, 1);
+ // FIXME (149423): Should this ImageBuffer be unconditionally unaccelerated?
+ std::unique_ptr<ImageBuffer> temp = ImageBuffer::create(size, Unaccelerated);
if (!temp)
return nullptr;
i = std::min(m_capacity - 1, i);
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/html/shadow/MediaControlElements.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/html/shadow/MediaControlElements.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/html/shadow/MediaControlElements.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -1378,7 +1378,8 @@
IntRect paintingRect = IntRect(IntPoint(), layer->size());
- std::unique_ptr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size(), deviceScaleFactor, ColorSpaceDeviceRGB));
+ // FIXME (149422): This buffer should not be unconditionally unaccelerated.
+ std::unique_ptr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size(), Unaccelerated, deviceScaleFactor));
if (!buffer)
return nullptr;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/page/FrameSnapshotting.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/page/FrameSnapshotting.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/page/FrameSnapshotting.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -99,7 +99,7 @@
if (frame.settings().delegatesPageScaling())
scaleFactor *= frame.page()->pageScaleFactor();
- std::unique_ptr<ImageBuffer> buffer = ImageBuffer::create(imageRect.size(), scaleFactor, ColorSpaceDeviceRGB);
+ std::unique_ptr<ImageBuffer> buffer = ImageBuffer::create(imageRect.size(), Unaccelerated, scaleFactor);
if (!buffer)
return nullptr;
buffer->context()->translate(-imageRect.x(), -imageRect.y());
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/BitmapImage.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/BitmapImage.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/BitmapImage.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -616,7 +616,7 @@
return;
}
if (!m_cachedImage) {
- std::unique_ptr<ImageBuffer> buffer = ImageBuffer::create(expandedIntSize(tileRect.size()));
+ std::unique_ptr<ImageBuffer> buffer = ctxt->createCompatibleBuffer(expandedIntSize(tileRect.size()));
if (!buffer)
return;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -97,7 +97,7 @@
void CrossfadeGeneratedImage::drawPattern(GraphicsContext* context, const FloatRect& srcRect, const AffineTransform& patternTransform, const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator compositeOp, const FloatRect& dstRect, BlendMode blendMode)
{
- std::unique_ptr<ImageBuffer> imageBuffer = ImageBuffer::create(size(), 1, ColorSpaceDeviceRGB, context->isAcceleratedContext() ? Accelerated : Unaccelerated);
+ std::unique_ptr<ImageBuffer> imageBuffer = ImageBuffer::create(size(), context->renderingMode());
if (!imageBuffer)
return;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/GraphicsContext.h (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/GraphicsContext.h 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/GraphicsContext.h 2015-10-13 09:35:51 UTC (rev 190938)
@@ -32,6 +32,7 @@
#include "FloatRect.h"
#include "FontCascade.h"
#include "Gradient.h"
+#include "GraphicsTypes.h"
#include "Image.h"
#include "ImageOrientation.h"
#include "Path.h"
@@ -270,6 +271,7 @@
WEBCORE_EXPORT void setIsAcceleratedContext(bool);
#endif
bool isAcceleratedContext() const;
+ RenderingMode renderingMode() const { return isAcceleratedContext() ? Accelerated : Unaccelerated; }
WEBCORE_EXPORT void save();
WEBCORE_EXPORT void restore();
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/GraphicsTypes.h (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/GraphicsTypes.h 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/GraphicsTypes.h 2015-10-13 09:35:51 UTC (rev 190938)
@@ -84,6 +84,12 @@
enum TextAlign { StartTextAlign, EndTextAlign, LeftTextAlign, CenterTextAlign, RightTextAlign };
+ enum RenderingMode {
+ Unaccelerated,
+ UnacceleratedNonPlatformBuffer, // Use plain memory allocation rather than platform API to allocate backing store.
+ Accelerated
+ };
+
String compositeOperatorName(CompositeOperator, BlendMode);
bool parseBlendMode(const String&, BlendMode&);
bool parseCompositeAndBlendOperator(const String&, CompositeOperator&, BlendMode&);
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/ImageBuffer.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/ImageBuffer.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/ImageBuffer.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -160,7 +160,7 @@
std::unique_ptr<ImageBuffer> ImageBuffer::createCompatibleBuffer(const FloatSize& size, float resolutionScale, ColorSpace colorSpace, const GraphicsContext* context, bool)
{
- return create(size, resolutionScale, colorSpace, context->isAcceleratedContext() ? Accelerated : Unaccelerated);
+ return create(size, context->renderingMode(), resolutionScale, colorSpace);
}
}
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/ImageBuffer.h (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/ImageBuffer.h 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/ImageBuffer.h 2015-10-13 09:35:51 UTC (rev 190938)
@@ -55,12 +55,6 @@
Unmultiplied
};
-enum RenderingMode {
- Unaccelerated,
- UnacceleratedNonPlatformBuffer, // Use plain memory allocation rather than platform API to allocate backing store.
- Accelerated
-};
-
enum BackingStoreCopy {
CopyBackingStore, // Guarantee subsequent draws don't affect the copy.
DontCopyBackingStore // Subsequent draws may affect the copy.
@@ -75,7 +69,7 @@
WTF_MAKE_NONCOPYABLE(ImageBuffer); WTF_MAKE_FAST_ALLOCATED;
public:
// Will return a null pointer on allocation failure.
- static std::unique_ptr<ImageBuffer> create(const FloatSize& size, float resolutionScale = 1, ColorSpace colorSpace = ColorSpaceDeviceRGB, RenderingMode renderingMode = Unaccelerated)
+ static std::unique_ptr<ImageBuffer> create(const FloatSize& size, RenderingMode renderingMode, float resolutionScale = 1, ColorSpace colorSpace = ColorSpaceDeviceRGB)
{
bool success = false;
std::unique_ptr<ImageBuffer> buffer(new ImageBuffer(size, resolutionScale, colorSpace, renderingMode, success));
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/NamedImageGeneratedImage.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/NamedImageGeneratedImage.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/NamedImageGeneratedImage.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -63,7 +63,6 @@
void NamedImageGeneratedImage::drawPattern(GraphicsContext* context, const FloatRect& srcRect, const AffineTransform& patternTransform, const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator compositeOp, const FloatRect& dstRect, BlendMode blendMode)
{
#if USE(NEW_THEME)
-// std::unique_ptr<ImageBuffer> imageBuffer = ImageBuffer::create(size(), 1, ColorSpaceDeviceRGB, context->isAcceleratedContext() ? Accelerated : Unaccelerated);
std::unique_ptr<ImageBuffer> imageBuffer = context->createCompatibleBuffer(size(), true);
if (!imageBuffer)
return;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/ShadowBlur.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/ShadowBlur.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/ShadowBlur.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -79,7 +79,9 @@
IntSize roundedSize(roundUpToMultipleOf32(size.width()), roundUpToMultipleOf32(size.height()));
clearScratchBuffer();
- m_imageBuffer = ImageBuffer::create(roundedSize, 1);
+
+ // ShadowBlur is not used with accelerated drawing, so it's OK to make an unconditionally unaccelerated buffer.
+ m_imageBuffer = ImageBuffer::create(roundedSize, Unaccelerated, 1);
return m_imageBuffer.get();
}
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -322,7 +322,8 @@
#if USE(IOSURFACE_CANVAS_BACKING_STORE)
// Make a copy of the source to ensure the bits don't change before being drawn
IntSize sourceCopySize(sourceRect.width(), sourceRect.height());
- std::unique_ptr<ImageBuffer> sourceCopy = ImageBuffer::create(sourceCopySize, 1, ColorSpaceDeviceRGB, Unaccelerated);
+ // FIXME (149431): Should this ImageBuffer be unconditionally unaccelerated? Making it match the context seems to break putData().
+ std::unique_ptr<ImageBuffer> sourceCopy = ImageBuffer::create(sourceCopySize, Unaccelerated, 1, ColorSpaceDeviceRGB);
if (!sourceCopy)
return;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/filters/FilterEffect.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/filters/FilterEffect.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/filters/FilterEffect.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -276,7 +276,7 @@
if (m_openCLImageResult)
return openCLImageToImageBuffer();
#endif
- m_imageBufferResult = ImageBuffer::create(m_absolutePaintRect.size(), m_filter.filterScale(), m_resultColorSpace, m_filter.renderingMode());
+ m_imageBufferResult = ImageBuffer::create(m_absolutePaintRect.size(), m_filter.renderingMode(), m_filter.filterScale(), m_resultColorSpace);
if (!m_imageBufferResult)
return nullptr;
@@ -308,7 +308,7 @@
if (context->isFailed(clEnqueueReadImage(context->commandQueue(), m_openCLImageResult, CL_TRUE, origin, region, 0, 0, destinationPixelArray->data(), 0, 0, 0)))
return nullptr;
- m_imageBufferResult = ImageBuffer::create(m_absolutePaintRect.size());
+ m_imageBufferResult = ImageBuffer::create(m_absolutePaintRect.size(), m_filter.renderingMode());
if (!m_imageBufferResult)
return nullptr;
@@ -462,7 +462,7 @@
return nullptr;
FloatSize clampedSize = ImageBuffer::clampedSize(m_absolutePaintRect.size());
- m_imageBufferResult = ImageBuffer::create(clampedSize, m_filter.filterScale(), m_resultColorSpace, m_filter.renderingMode());
+ m_imageBufferResult = ImageBuffer::create(clampedSize, m_filter.renderingMode(), m_filter.filterScale(), m_resultColorSpace);
if (!m_imageBufferResult)
return nullptr;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/texmap/BitmapTexture.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/texmap/BitmapTexture.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/platform/graphics/texmap/BitmapTexture.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -35,7 +35,9 @@
void BitmapTexture::updateContents(TextureMapper* textureMapper, GraphicsLayer* sourceLayer, const IntRect& targetRect, const IntPoint& offset, UpdateContentsFlag updateContentsFlag)
{
- std::unique_ptr<ImageBuffer> imageBuffer = ImageBuffer::create(targetRect.size());
+ // Making an unconditionally unaccelerated buffer here is OK because this code
+ // isn't used by any platforms that respect the accelerated bit.
+ std::unique_ptr<ImageBuffer> imageBuffer = ImageBuffer::create(targetRect.size(), Unaccelerated);
if (!imageBuffer)
return;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/FilterEffectRenderer.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/FilterEffectRenderer.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/FilterEffectRenderer.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -323,7 +323,7 @@
if (!m_graphicsBufferAttached) {
IntSize logicalSize(m_sourceDrawingRegion.width(), m_sourceDrawingRegion.height());
if (!sourceImage() || sourceImage()->logicalSize() != logicalSize)
- setSourceImage(ImageBuffer::create(logicalSize, filterScale(), ColorSpaceDeviceRGB, renderingMode()));
+ setSourceImage(ImageBuffer::create(logicalSize, renderingMode(), filterScale()));
m_graphicsBufferAttached = true;
}
}
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderLayer.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderLayer.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/RenderLayer.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -6887,17 +6887,17 @@
}
FilterInfo& filterInfo = FilterInfo::get(*this);
+ Frame& frame = renderer().frame();
if (!filterInfo.renderer()) {
RefPtr<FilterEffectRenderer> filterRenderer = FilterEffectRenderer::create();
- filterRenderer->setFilterScale(renderer().frame().page()->deviceScaleFactor());
- RenderingMode renderingMode = renderer().frame().settings().acceleratedFiltersEnabled() ? Accelerated : Unaccelerated;
- filterRenderer->setRenderingMode(renderingMode);
+ filterRenderer->setFilterScale(frame.page()->deviceScaleFactor());
+ filterRenderer->setRenderingMode(frame.settings().acceleratedFiltersEnabled() ? Accelerated : Unaccelerated);
filterInfo.setRenderer(WTF::move(filterRenderer));
// We can optimize away code paths in other places if we know that there are no software filters.
renderer().view().setHasSoftwareFilters(true);
- } else if (filterInfo.renderer()->filterScale() != renderer().frame().page()->deviceScaleFactor()) {
- filterInfo.renderer()->setFilterScale(renderer().frame().page()->deviceScaleFactor());
+ } else if (filterInfo.renderer()->filterScale() != frame.page()->deviceScaleFactor()) {
+ filterInfo.renderer()->setFilterScale(frame.page()->deviceScaleFactor());
filterInfo.renderer()->clearIntermediateResults();
}
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/shapes/Shape.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/shapes/Shape.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/shapes/Shape.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -179,7 +179,8 @@
IntRect imageRect = snappedIntRect(imageR);
IntRect marginRect = snappedIntRect(marginR);
auto intervals = std::make_unique<RasterShapeIntervals>(marginRect.height(), -marginRect.y());
- std::unique_ptr<ImageBuffer> imageBuffer = ImageBuffer::create(imageRect.size());
+ // FIXME (149420): This buffer should not be unconditionally unaccelerated.
+ std::unique_ptr<ImageBuffer> imageBuffer = ImageBuffer::create(imageRect.size(), Unaccelerated);
if (imageBuffer) {
GraphicsContext* graphicsContext = imageBuffer->context();
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -141,6 +141,7 @@
AffineTransform absoluteTransform = SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(renderer);
if (shouldCreateClipperMaskImage && !repaintRect.isEmpty()) {
+ // FIXME (149469): This image buffer should not be unconditionally unaccelerated. Making it match the context breaks nested clipping, though.
clipperMaskImage = SVGRenderingContext::createImageBuffer(repaintRect, absoluteTransform, ColorSpaceDeviceRGB, Unaccelerated);
if (!clipperMaskImage)
return false;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -61,7 +61,7 @@
AffineTransform absoluteTransform = SVGRenderingContext::calculateTransformationToOutermostCoordinateSystem(*textRootBlock);
FloatRect repaintRect = textRootBlock->repaintRectInLocalCoordinates();
- auto maskImage = SVGRenderingContext::createImageBuffer(repaintRect, absoluteTransform, ColorSpaceDeviceRGB, Unaccelerated);
+ auto maskImage = SVGRenderingContext::createImageBuffer(repaintRect, absoluteTransform, ColorSpaceDeviceRGB, context->renderingMode());
if (!maskImage)
return false;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -69,6 +69,7 @@
if (!maskerData->maskImage && !repaintRect.isEmpty()) {
const SVGRenderStyle& svgStyle = style().svgStyle();
ColorSpace colorSpace = svgStyle.colorInterpolation() == CI_LINEARRGB ? ColorSpaceLinearRGB : ColorSpaceDeviceRGB;
+ // FIXME (149470): This image buffer should not be unconditionally unaccelerated. Making it match the context breaks alpha masking, though.
maskerData->maskImage = SVGRenderingContext::createImageBuffer(repaintRect, absoluteTransform, colorSpace, Unaccelerated);
if (!maskerData->maskImage)
return false;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -94,7 +94,7 @@
static_cast<float>(m_attributes.patternTransform().yScale()));
// Build tile image.
- auto tileImage = createTileImage(m_attributes, tileBoundaries, absoluteTileBoundaries, tileImageTransform, clampedAbsoluteTileBoundaries, context.isAcceleratedContext() ? Accelerated : Unaccelerated);
+ auto tileImage = createTileImage(m_attributes, tileBoundaries, absoluteTileBoundaries, tileImageTransform, clampedAbsoluteTileBoundaries, context.renderingMode());
if (!tileImage)
return nullptr;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/SVGRenderingContext.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/SVGRenderingContext.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/rendering/svg/SVGRenderingContext.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -247,7 +247,7 @@
FloatSize scale;
FloatSize clampedSize = ImageBuffer::clampedSize(paintRect.size(), scale);
- auto imageBuffer = ImageBuffer::create(clampedSize, 1, colorSpace, renderingMode);
+ auto imageBuffer = ImageBuffer::create(clampedSize, renderingMode, 1, colorSpace);
if (!imageBuffer)
return nullptr;
@@ -270,7 +270,7 @@
if (clampedSize.isEmpty())
return nullptr;
- auto imageBuffer = ImageBuffer::create(clampedSize, 1, colorSpace, renderingMode);
+ auto imageBuffer = ImageBuffer::create(clampedSize, renderingMode, 1, colorSpace);
if (!imageBuffer)
return nullptr;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/graphics/SVGImage.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/graphics/SVGImage.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/graphics/SVGImage.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -173,7 +173,8 @@
if (!m_page)
return 0;
- std::unique_ptr<ImageBuffer> buffer = ImageBuffer::create(size(), 1);
+ // Cairo does not use the accelerated drawing flag, so it's OK to make an unconditionally unaccelerated buffer.
+ std::unique_ptr<ImageBuffer> buffer = ImageBuffer::create(size(), Unaccelerated);
if (!buffer) // failed to allocate image
return 0;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebKit/mac/ChangeLog (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebKit/mac/ChangeLog 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebKit/mac/ChangeLog 2015-10-13 09:35:51 UTC (rev 190938)
@@ -1,3 +1,13 @@
+2015-09-22 Tim Horton <[email protected]>
+
+ Make it more obvious when using an unaccelerated image buffer, and fix a few callers who do
+ https://bugs.webkit.org/show_bug.cgi?id=149428
+
+ Reviewed by Simon Fraser and Darin Adler.
+
+ * WebCoreSupport/WebContextMenuClient.mm:
+ (WebContextMenuClient::imageForCurrentSharingServicePickerItem):
+
2015-08-17 Filip Pizlo <[email protected]>
Replace all remaining uses of WTF::Mutex with WTF::Lock
Modified: releases/WebKitGTK/webkit-2.10/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm 2015-10-13 09:35:51 UTC (rev 190938)
@@ -465,7 +465,8 @@
if (!clientFloatRectForNode(*node, rect))
return nil;
- std::unique_ptr<ImageBuffer> buffer = ImageBuffer::create(rect.size());
+ // This is effectively a snapshot, and will be painted in an unaccelerated fashion in line with FrameSnapshotting.
+ std::unique_ptr<ImageBuffer> buffer = ImageBuffer::create(rect.size(), Unaccelerated);
if (!buffer)
return nil;
Modified: releases/WebKitGTK/webkit-2.10/Source/WebKit2/ChangeLog (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebKit2/ChangeLog 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebKit2/ChangeLog 2015-10-13 09:35:51 UTC (rev 190938)
@@ -1,3 +1,13 @@
+2015-09-22 Tim Horton <[email protected]>
+
+ Make it more obvious when using an unaccelerated image buffer, and fix a few callers who do
+ https://bugs.webkit.org/show_bug.cgi?id=149428
+
+ Reviewed by Simon Fraser and Darin Adler.
+
+ * Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp:
+ (WebKit::ThreadSafeCoordinatedSurface::create):
+
2015-09-22 Andreas Kling <[email protected]>
[WK2][NetworkCache] New entry bodies remain in dirty memory after being written to disk.
Modified: releases/WebKitGTK/webkit-2.10/Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp (190937 => 190938)
--- releases/WebKitGTK/webkit-2.10/Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp 2015-10-13 09:19:22 UTC (rev 190937)
+++ releases/WebKitGTK/webkit-2.10/Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp 2015-10-13 09:35:51 UTC (rev 190938)
@@ -37,7 +37,9 @@
Ref<ThreadSafeCoordinatedSurface> ThreadSafeCoordinatedSurface::create(const IntSize& size, CoordinatedSurface::Flags flags)
{
- return adoptRef(*new ThreadSafeCoordinatedSurface(size, flags, ImageBuffer::create(size)));
+ // Making an unconditionally unaccelerated buffer here is OK because this code
+ // isn't used by any platforms that respect the accelerated bit.
+ return adoptRef(*new ThreadSafeCoordinatedSurface(size, flags, ImageBuffer::create(size, Unaccelerated)));
}
Ref<ThreadSafeCoordinatedSurface> ThreadSafeCoordinatedSurface::create(const IntSize& size, CoordinatedSurface::Flags flags, std::unique_ptr<ImageBuffer> buffer)