Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: bb11508b37f1413c13e7d136b375cf72d6fb732a
https://github.com/WebKit/WebKit/commit/bb11508b37f1413c13e7d136b375cf72d6fb732a
Author: Simon Fraser <[email protected]>
Date: 2026-01-02 (Fri, 02 Jan 2026)
Changed paths:
M Source/WebCore/SourcesCocoa.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/platform/graphics/coreimage/FEBlendCoreImageApplier.mm
M
Source/WebCore/platform/graphics/coreimage/FEColorMatrixCoreImageApplier.mm
M
Source/WebCore/platform/graphics/coreimage/FEComponentTransferCoreImageApplier.mm
M Source/WebCore/platform/graphics/coreimage/FECompositeCoreImageApplier.mm
M Source/WebCore/platform/graphics/coreimage/FEFloodCoreImageApplier.mm
A
Source/WebCore/platform/graphics/coreimage/FEGaussianBlurCoreImageApplier.h
A
Source/WebCore/platform/graphics/coreimage/FEGaussianBlurCoreImageApplier.mm
M Source/WebCore/platform/graphics/coreimage/FEMorphologyCoreImageApplier.mm
M Source/WebCore/platform/graphics/coreimage/FilterImageCoreImage.mm
M Source/WebCore/platform/graphics/coreimage/SourceAlphaCoreImageApplier.mm
M
Source/WebCore/platform/graphics/coreimage/SourceGraphicCoreImageApplier.mm
M Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp
M Source/WebCore/platform/graphics/filters/Filter.cpp
M Source/WebCore/platform/graphics/filters/Filter.h
M Source/WebCore/platform/network/mac/WebCoreURLResponse.mm
M Source/WebCore/rendering/CSSFilterRenderer.cpp
M Source/WebCore/rendering/CSSFilterRenderer.h
Log Message:
-----------
[CI Filters] Implement FEGaussianBlur in Core Image, and fix some geometry
issues
https://bugs.webkit.org/show_bug.cgi?id=304854
rdar://167443665
Reviewed by Mike Wyrzykowski.
Add FEGaussianBlurCoreImageApplier, which uses a `CIGaussianBlurXY` filter so
we can control
X and Y radii independently.
Testing this revealed an issue where the geometry was wrong for SVG reference
filters used
in CSS. When a CSS filter chain contains both CSS and SVG filters, the entire
chain is rendered
using Core Image if possible. This means that every primitive needs to use the
same reference
geometry, since Core Image works in flipped coordinates, so the rect relative
to which flipping
happens needs to be consistent.
To fix this, introduce the concept of an "enclosing filter region", which is
the union of
the filterRegions of all the filters in the chain. This is computed by
`CSSFilterRenderer`
just before applying. Each primitive can then use
`filter.flippedRectRelativeToAbsoluteEnclosingFilterRegion(result.absoluteImageRect())`
to compute the correct extent rect.
Add `BEGIN_BLOCK_OBJC_EXCEPTIONS`/`END_BLOCK_OBJC_EXCEPTIONS` around all the CI
code.
* Source/WebCore/SourcesCocoa.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/graphics/coreimage/FEBlendCoreImageApplier.mm:
(WebCore::FEBlendCoreImageApplier::apply const):
* Source/WebCore/platform/graphics/coreimage/FEColorMatrixCoreImageApplier.mm:
(WebCore::FEColorMatrixCoreImageApplier::apply const):
*
Source/WebCore/platform/graphics/coreimage/FEComponentTransferCoreImageApplier.mm:
* Source/WebCore/platform/graphics/coreimage/FECompositeCoreImageApplier.mm:
(WebCore::FECompositeCoreImageApplier::apply const):
* Source/WebCore/platform/graphics/coreimage/FEFloodCoreImageApplier.mm:
(WebCore::FEFloodCoreImageApplier::apply const):
* Source/WebCore/platform/graphics/coreimage/FEGaussianBlurCoreImageApplier.h:
* Source/WebCore/platform/graphics/coreimage/FEGaussianBlurCoreImageApplier.mm:
(WebCore::FEGaussianBlurCoreImageApplier::FEGaussianBlurCoreImageApplier):
(WebCore::FEGaussianBlurCoreImageApplier::supportsCoreImageRendering):
(WebCore::FEGaussianBlurCoreImageApplier::apply const):
* Source/WebCore/platform/graphics/coreimage/FEMorphologyCoreImageApplier.mm:
(WebCore::FEMorphologyCoreImageApplier::apply const):
* Source/WebCore/platform/graphics/coreimage/FilterImageCoreImage.mm:
(WebCore::FilterImage::filterResultImageBuffer):
* Source/WebCore/platform/graphics/coreimage/SourceAlphaCoreImageApplier.mm:
(WebCore::SourceAlphaCoreImageApplier::apply const):
* Source/WebCore/platform/graphics/coreimage/SourceGraphicCoreImageApplier.mm:
(WebCore::SourceGraphicCoreImageApplier::apply const):
* Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::supportedFilterRenderingModes const):
(WebCore::FEGaussianBlur::createAcceleratedApplier const):
* Source/WebCore/platform/graphics/filters/Filter.cpp:
(WebCore::Filter::Filter):
(WebCore::Filter::absoluteEnclosingFilterRegion const):
(WebCore::Filter::flippedRectRelativeToAbsoluteEnclosingFilterRegion const):
(WebCore::Filter::filterResultBuffer const):
* Source/WebCore/platform/graphics/filters/Filter.h:
(WebCore::Filter::enclosingFilterRegion const):
(WebCore::Filter::setEnclosingFilterRegion):
* Source/WebCore/platform/network/mac/WebCoreURLResponse.mm: Unified sources
fix.
* Source/WebCore/rendering/CSSFilterRenderer.cpp:
(WebCore::CSSFilterRenderer::computeEnclosingFilterRegion):
* Source/WebCore/rendering/CSSFilterRenderer.h:
Canonical link: https://commits.webkit.org/305054@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications