RESOLVED FIXED 218259
[Concurrent display lists] Add alternate versions of existing display list items that only contain inline data
https://bugs.webkit.org/show_bug.cgi?id=218259
Summary [Concurrent display lists] Add alternate versions of existing display list it...
Wenson Hsieh
Reported 2020-10-27 13:50:19 PDT
- StrokeInlinePath - FillInlinePath - SetStrokeThickness - SetInlineFillColor - SetInlineStrokeColor - SetInlineFillGradient
Attachments
Patch (54.42 KB, patch)
2020-10-27 16:53 PDT, Wenson Hsieh
no flags
For EWS (53.75 KB, patch)
2020-10-27 16:57 PDT, Wenson Hsieh
no flags
Fix builds (53.88 KB, patch)
2020-10-27 17:47 PDT, Wenson Hsieh
no flags
Wenson Hsieh
Comment 1 2020-10-27 16:53:10 PDT Comment hidden (obsolete)
Wenson Hsieh
Comment 2 2020-10-27 16:57:32 PDT
Wenson Hsieh
Comment 3 2020-10-27 17:05:41 PDT
(whoops, looks like I missed a SPECIALIZE_TYPE_TRAITS_DISPLAYLIST_ITEM for SetInlineFillGradient in this patch)
Wenson Hsieh
Comment 4 2020-10-27 17:47:12 PDT
Created attachment 412486 [details] Fix builds
EWS
Comment 5 2020-10-27 19:09:22 PDT
Committed r269092: <https://trac.webkit.org/changeset/269092> All reviewed patches have been landed. Closing bug and clearing flags on attachment 412486 [details].
Radar WebKit Bug Importer
Comment 6 2020-10-27 19:10:18 PDT
Sam Weinig
Comment 7 2020-10-28 10:45:12 PDT
Since I don't recall seeing any references to what [Concurrent display lists] are, can you please explain what this feature is, and how you intend to go about implementing it?
Wenson Hsieh
Comment 8 2020-10-28 10:52:22 PDT
(In reply to Sam Weinig from comment #7) > Since I don't recall seeing any references to what [Concurrent display > lists] are, can you please explain what this feature is, and how you intend > to go about implementing it? This "feature" is supporting concurrent generation of display list items in the web process and consumption of display list items in the GPU process. Our overarching vision to achieve this is to make all of our display list items contain only PoD types, and store them directly in memory shared between the web and GPU processes. Upon pushing items into shared memory in the web process, the web process will notify the GPU process, which will read items out of shared memory (and continue doing so until there are no more items left to be read).
Sam Weinig
Comment 9 2020-10-28 11:36:02 PDT
(In reply to Wenson Hsieh from comment #8) > (In reply to Sam Weinig from comment #7) > > Since I don't recall seeing any references to what [Concurrent display > > lists] are, can you please explain what this feature is, and how you intend > > to go about implementing it? > > This "feature" is supporting concurrent generation of display list items in > the web process and consumption of display list items in the GPU process. > > Our overarching vision to achieve this is to make all of our display list > items contain only PoD types, and store them directly in memory shared > between the web and GPU processes. > > Upon pushing items into shared memory in the web process, the web process > will notify the GPU process, which will read items out of shared memory (and > continue doing so until there are no more items left to be read). Sounds reasonable. What is the plan for things that can't be directly encoded, like IOSurfaces?
Wenson Hsieh
Comment 10 2020-10-28 12:00:24 PDT
(In reply to Sam Weinig from comment #9) > (In reply to Wenson Hsieh from comment #8) > > (In reply to Sam Weinig from comment #7) > > > Since I don't recall seeing any references to what [Concurrent display > > > lists] are, can you please explain what this feature is, and how you intend > > > to go about implementing it? > > > > This "feature" is supporting concurrent generation of display list items in > > the web process and consumption of display list items in the GPU process. > > > > Our overarching vision to achieve this is to make all of our display list > > items contain only PoD types, and store them directly in memory shared > > between the web and GPU processes. > > > > Upon pushing items into shared memory in the web process, the web process > > will notify the GPU process, which will read items out of shared memory (and > > continue doing so until there are no more items left to be read). > > Sounds reasonable. What is the plan for things that can't be directly > encoded, like IOSurfaces? I would think IOSurfaces would exist in the GPUP already, so an identifier (and possibly some additional metadata) should be sufficient. More generally, our current thinking is to add a special display list item that represents mapping an identifier to a resource encoded directly in shared memory, and making display list items reference the resource via the identifier.
Note You need to log in before you can comment on or make changes to this bug.