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

Reply via email to