[webkit-changes] [WebKit/WebKit] 3e6f14: Inline stroking a single PathSegment

Said Abou-Hallawa noreply at github.com
Wed Oct 18 22:12:53 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3e6f143c6278c7e306454785343cba29355653ad
      https://github.com/WebKit/WebKit/commit/3e6f143c6278c7e306454785343cba29355653ad
  Author: Said Abou-Hallawa <said at apple.com>
  Date:   2023-10-18 (Wed, 18 Oct 2023)

  Changed paths:
    M Source/WTF/wtf/PlatformHave.h
    M Source/WTF/wtf/PlatformUse.h
    M Source/WebCore/platform/graphics/BifurcatedGraphicsContext.cpp
    M Source/WebCore/platform/graphics/BifurcatedGraphicsContext.h
    M Source/WebCore/platform/graphics/GraphicsContext.h
    M Source/WebCore/platform/graphics/NullGraphicsContext.h
    M Source/WebCore/platform/graphics/Path.cpp
    M Source/WebCore/platform/graphics/Path.h
    M Source/WebCore/platform/graphics/PathImpl.h
    M Source/WebCore/platform/graphics/PathSegment.cpp
    M Source/WebCore/platform/graphics/PathSegment.h
    M Source/WebCore/platform/graphics/PathStream.cpp
    M Source/WebCore/platform/graphics/PathStream.h
    M Source/WebCore/platform/graphics/cairo/PathCairo.cpp
    M Source/WebCore/platform/graphics/cairo/PathCairo.h
    M Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp
    M Source/WebCore/platform/graphics/cg/GraphicsContextCG.h
    M Source/WebCore/platform/graphics/cg/PathCG.cpp
    M Source/WebCore/platform/graphics/cg/PathCG.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp
    M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h
    M Source/WebCore/rendering/svg/RenderSVGPath.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGPath.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h
    M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in
    M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h

  Log Message:
  -----------
  Inline stroking a single PathSegment
https://bugs.webkit.org/show_bug.cgi?id=262822
rdar://116264934

Reviewed by Kimmo Kinnunen.

Like what we do for the single-PathDataLine path, other single-segment path cases
should be handled. Instead of sending a separate SetState message in addition to
the StrokePath to GPUP, we can piggyback the stroke width and color to StrokePath
or StrokePathSegment messages.

* Source/WTF/wtf/PlatformHave.h:
* Source/WTF/wtf/PlatformUse.h:
* Source/WebCore/platform/graphics/BifurcatedGraphicsContext.cpp:
(WebCore::BifurcatedGraphicsContext::fillPathSegment):
(WebCore::BifurcatedGraphicsContext::strokePathSegment):
* Source/WebCore/platform/graphics/BifurcatedGraphicsContext.h:
* Source/WebCore/platform/graphics/GraphicsContext.h:
* Source/WebCore/platform/graphics/NullGraphicsContext.h:
* Source/WebCore/platform/graphics/Path.cpp:
(WebCore::Path::singleDataLine const): Deleted.
(WebCore::Path::singleArc const): Deleted.
(WebCore::Path::singleQuadCurve const): Deleted.
(WebCore::Path::singleBezierCurve const): Deleted.
(WebCore::Path::definitelySingleLine const): Deleted.
* Source/WebCore/platform/graphics/Path.h:
(WebCore::Path::getSingle const):
(WebCore::Path::isSingleLine const):
(WebCore::Path::singleSegmentIfExists const): Deleted.
* Source/WebCore/platform/graphics/PathImpl.h:
(WebCore::PathImpl::singleSegment const):
(WebCore::PathImpl::singleDataLine const): Deleted.
(WebCore::PathImpl::singleArc const): Deleted.
(WebCore::PathImpl::singleQuadCurve const): Deleted.
(WebCore::PathImpl::singleBezierCurve const): Deleted.
* Source/WebCore/platform/graphics/PathSegment.cpp:
(WebCore::PathSegment::fastBoundingRect const):
(WebCore::PathSegment::createPlatformPath const):
* Source/WebCore/platform/graphics/PathSegment.h:
(WebCore::PathSegment::get const):
* Source/WebCore/platform/graphics/PathStream.cpp:
(WebCore::PathStream::singleDataType const): Deleted.
(WebCore::PathStream::singleDataLine const): Deleted.
(WebCore::PathStream::singleArc const): Deleted.
(WebCore::PathStream::singleQuadCurve const): Deleted.
(WebCore::PathStream::singleBezierCurve const): Deleted.
* Source/WebCore/platform/graphics/PathStream.h:
* Source/WebCore/platform/graphics/cairo/PathCairo.cpp:
(WebCore::PathCairo::createPlatformPath):
* Source/WebCore/platform/graphics/cairo/PathCairo.h:
* Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::GraphicsContextCG::fillPathWithGradient):
(WebCore::GraphicsContextCG::fillPathWithGradientAndShadow):
(WebCore::GraphicsContextCG::fillPath):
(WebCore::GraphicsContextCG::strokePathWithGradient):
(WebCore::GraphicsContextCG::strokePathWithGradientAndShadow):
(WebCore::GraphicsContextCG::strokePath):
(WebCore::GraphicsContextCG::fillPathSegment):
(WebCore::GraphicsContextCG::strokePathSegment):
* Source/WebCore/platform/graphics/cg/GraphicsContextCG.h:
* Source/WebCore/platform/graphics/cg/PathCG.cpp:
(WebCore::PathCG::createPlatformPath):
* Source/WebCore/platform/graphics/cg/PathCG.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::StrokeLine::apply const):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::fillPath):
(WebCore::DisplayList::Recorder::fillPathSegment):
(WebCore::DisplayList::Recorder::strokePath):
(WebCore::DisplayList::Recorder::strokePathSegment):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp:
(WebCore::DisplayList::RecorderImpl::recordStrokeLineWithColorAndThickness):
(WebCore::DisplayList::RecorderImpl::recordStrokeArcWithColorAndThickness):
(WebCore::DisplayList::RecorderImpl::recordStrokeQuadCurveWithColorAndThickness):
(WebCore::DisplayList::RecorderImpl::recordStrokeBezierCurveWithColorAndThickness):
(WebCore::DisplayList::RecorderImpl::recordStrokePathSegmentWithColorAndThickness):
(WebCore::DisplayList::RecorderImpl::recordStrokePathWithColorAndThickness):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h:
* Source/WebCore/rendering/svg/RenderSVGPath.cpp:
(WebCore::RenderSVGPath::updateShapeFromElement):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGPath.cpp:
(WebCore::LegacyRenderSVGPath::updateShapeFromElement):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::strokeLineWithColorAndThickness):
(WebKit::RemoteDisplayListRecorder::strokeArcWithColorAndThickness):
(WebKit::RemoteDisplayListRecorder::strokeQuadCurveWithColorAndThickness):
(WebKit::RemoteDisplayListRecorder::strokeBezierCurveWithColorAndThickness):
(WebKit::RemoteDisplayListRecorder::strokePathSegmentWithColorAndThickness):
(WebKit::RemoteDisplayListRecorder::strokePathWithColorAndThickness):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::recordStrokeLineWithColorAndThickness):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokeArcWithColorAndThickness):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokeQuadCurveWithColorAndThickness):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokeBezierCurveWithColorAndThickness):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokePathSegmentWithColorAndThickness):
(WebKit::RemoteDisplayListRecorderProxy::recordStrokePathWithColorAndThickness):
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:

Canonical link: https://commits.webkit.org/269504@main




More information about the webkit-changes mailing list