Summary: | [GPU Process] [iOS] Sometimes the text drop shadow is not drawn | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Jon Lee <jonlee> | ||||||
Component: | WebKit Process Model | Assignee: | Said Abou-Hallawa <sabouhallawa> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | changseok, esprehn+autocc, ews-watchlist, glenn, kondapallykalyan, pdr, sabouhallawa, simon.fraser, webkit-bug-importer | ||||||
Priority: | P2 | Keywords: | InRadar | ||||||
Version: | WebKit Nightly Build | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
See Also: | https://bugs.webkit.org/show_bug.cgi?id=237728 | ||||||||
Bug Depends on: | |||||||||
Bug Blocks: | 233914, 236508 | ||||||||
Attachments: |
|
Description
Jon Lee
2022-02-19 21:59:33 PST
obb-paintserver.html turns into a Crash, and paint-order-shadow.html still fails, but the others are resolved with the patch for 237728. The crash in orb-paintserver.html is fixed. It was happening because of infinite recursion. It was happening because of this new function inline bool operator==(const std::variant<Ref<Gradient>, Ref<Pattern>>& a, const std::variant<Ref<Gradient>, Ref<Pattern>>& b) { return WTF::switchOn(a, [&] (const Ref<Gradient>& aGradient) { if (auto* bGradient = std::get_if<Ref<Gradient>>(&b)) return aGradient == *bGradient; return false; }, [&] (const Ref<Pattern>& aPattern) { if (auto* bPattern = std::get_if<Ref<Pattern>>(&b)) return aPattern == *bPattern; return false; } ); } The equality in "return aPattern == *bPattern;" was causing the recursion. Ref<Pattern> was converted to std::variant<Ref<Gradient>, Ref<Pattern>> so the function was calling itself infinitely. The fix is not to compare Ref<Pattern> but to compare the raw pointers: "return aPattern.ptr() == bPattern->ptr();" Can we use arePointingToEqualData() here? Remaining failures: https://results.webkit.org/?suite=layout-tests&suite=layout-tests&test=fast%2Fcss%2Fpaint-order-shadow.html&test=imported%2Fblink%2Fsvg%2Ftext%2Fobb-paintserver.html fast/css/paint-order-shadow.html [ ImageOnlyFailure ] imported/blink/svg/text/obb-paintserver.html [ ImageOnlyFailure ] The failure: imported/blink/svg/text/obb-paintserver.html [ ImageOnlyFailure ] is tracked by bug 236924. Let this bug track the failure: imported/blink/svg/text/obb-paintserver.html [ ImageOnlyFailure ] Created attachment 456432 [details]
Patch
Comment on attachment 456432 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=456432&action=review > Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:51 > Recorder::Recorder(const GraphicsContextState& state, const FloatRect& initialClip, const AffineTransform& initialCTM, DrawGlyphsRecorder::DeconstructDrawGlyphs deconstructDrawGlyphs) > : GraphicsContext(state) > - , m_drawGlyphsRecorder(*this, deconstructDrawGlyphs) > + , m_drawGlyphsRecorder(*this, initialCTM.xScale(), deconstructDrawGlyphs) Does this do the right thing when zoomed? Created attachment 456531 [details]
Patch
Comment on attachment 456432 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=456432&action=review >> Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:51 >> + , m_drawGlyphsRecorder(*this, initialCTM.xScale(), deconstructDrawGlyphs) > > Does this do the right thing when zoomed? yes Committed r292294 (249192@main): <https://commits.webkit.org/249192@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 456531 [details]. |