Bug 215052

Summary: Make GlyphBuffers required in the fast text codepath
Product: WebKit Reporter: Myles C. Maxfield <mmaxfield>
Component: New BugsAssignee: Myles C. Maxfield <mmaxfield>
Status: RESOLVED FIXED    
Severity: Normal CC: changseok, darin, dino, esprehn+autocc, ews-watchlist, fmalita, glenn, gyuyoung.kim, jonlee, koivisto, kondapallykalyan, pdr, sabouhallawa, schenney, sergio, simon.fraser, thorton, webkit-bug-importer, zalan
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 206208    
Attachments:
Description Flags
Patch
none
Patch
none
Patch
none
Patch
none
Patch darin: review+

Myles C. Maxfield
Reported 2020-08-01 00:19:55 PDT
Make GlyphBuffers required in the fast text codepath
Attachments
Patch (20.21 KB, patch)
2020-08-01 00:29 PDT, Myles C. Maxfield
no flags
Patch (21.78 KB, patch)
2020-08-01 12:18 PDT, Myles C. Maxfield
no flags
Patch (21.81 KB, patch)
2020-08-01 12:27 PDT, Myles C. Maxfield
no flags
Patch (23.75 KB, patch)
2020-08-04 20:08 PDT, Myles C. Maxfield
no flags
Patch (23.06 KB, patch)
2020-08-04 21:04 PDT, Myles C. Maxfield
darin: review+
Myles C. Maxfield
Comment 1 2020-08-01 00:29:21 PDT
Myles C. Maxfield
Comment 2 2020-08-01 02:31:49 PDT
Comment on attachment 405771 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=405771&action=review > Source/WebCore/platform/graphics/WidthIterator.cpp:84 > if (m_run.length() <= 1 || !(m_enableKerning || m_requiresShaping)) if (m_run.length() <= 1)
Myles C. Maxfield
Comment 3 2020-08-01 12:18:57 PDT
Myles C. Maxfield
Comment 4 2020-08-01 12:27:15 PDT
Simon Fraser (smfr)
Comment 5 2020-08-03 10:11:45 PDT
Is this going to be a perf regression?
Myles C. Maxfield
Comment 6 2020-08-04 20:08:51 PDT
Myles C. Maxfield
Comment 7 2020-08-04 21:04:03 PDT
Myles C. Maxfield
Comment 8 2020-08-04 21:05:00 PDT
(In reply to Simon Fraser (smfr) from comment #5) > Is this going to be a perf regression? I'm still testing. Will comment here when I know more.
Myles C. Maxfield
Comment 9 2020-08-06 14:41:09 PDT
% compare-results -a plt-results-Vanilla -b plt-results-RequiredGlyphBuffers a mean = 740.41311 b mean = 743.70648 pValue = 0.7209862553 (Smaller means are better.) 1.004 times worse Results ARE NOT significant
Myles C. Maxfield
Comment 10 2020-08-06 15:33:20 PDT
The design test of MotionMark shows this to be a progression With patch: 156pt Without patch: 153pt
Radar WebKit Bug Importer
Comment 11 2020-08-08 00:20:17 PDT
Darin Adler
Comment 12 2020-08-08 11:40:39 PDT
Comment on attachment 405981 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=405981&action=review > Source/WebCore/platform/graphics/FontCascade.cpp:450 > + // This is needed only to match the result of the slow path. Same glyph widths but different floating point arithmentics can > + // produce different run width. Existing comment just moving but: - Would look nicer if line break was at sentence break. - "arithmentics" > LayoutTests/ChangeLog:8 > + * platform/win/fast/events/selectstart-by-drag-expected.txt: Test progressed on Windows. Do you know why?
Myles C. Maxfield
Comment 13 2020-08-08 21:40:11 PDT
Comment on attachment 405981 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=405981&action=review >> LayoutTests/ChangeLog:8 >> + * platform/win/fast/events/selectstart-by-drag-expected.txt: Test progressed on Windows. > > Do you know why? I don't have a Windows development environment, so I can't say for sure, but requiring GlyphBuffers is a slight behavior change. When GlyphBuffers aren't specified, shaping doesn't occur at all, so making them mandatory performs shaping when shaping didn't always used to occur. (This is why I made sure to check performance numbers before making this patch as r?.) Because this is a progression, and aligns Windows with Mac and iOS, I didn't look too hard at it.
Myles C. Maxfield
Comment 14 2020-08-08 22:14:46 PDT
Note You need to log in before you can comment on or make changes to this bug.