Closed
Bug 1422040
Opened 7 years ago
Closed 6 years ago
Add the ability to use ipc::ByteBuf for blob image transfer
Categories
(Core :: Graphics: WebRender, enhancement, P2)
Core
Graphics: WebRender
Tracking
()
RESOLVED
WONTFIX
People
(Reporter: jrmuizel, Assigned: nical)
References
(Blocks 1 open bug)
Details
(Whiteboard: [wr-reserve])
This will let us avoid bug 1405824 and might be fast enough that we don't need to worry about not using shared memory for now.
Reporter | ||
Updated•7 years ago
|
Assignee: nobody → nical.bugzilla
Updated•7 years ago
|
Whiteboard: [wr-mvp] [triage]
Reporter | ||
Comment 1•7 years ago
|
||
In this profile https://perfht.ml/2ApmBjH shared memory allocation is taking up at least 10% of webrender display list creation time
Updated•7 years ago
|
Status: NEW → ASSIGNED
Priority: -- → P1
Whiteboard: [wr-mvp] [triage] → [wr-mvp]
Assignee | ||
Comment 2•7 years ago
|
||
I might have let out that this was straight forward during yesterday's meeting but in fact IPDL still can't handle move-only types unless they are passed directly as a parameter of the message (so no way to pass it in an ipdl union or struct, which we can't do without in any reasonable way here).
So I am this close to go face the undefined behavior dragons by having ByteBuffer fake a copy constructor that const_casts the source and nulls out the buffer (making it equivalent to a move).
Assignee | ||
Comment 3•7 years ago
|
||
Hm, nevermind, this code in the ipdl compiler:
> def _cxxTypeNeedsMove(ipdltype):
> return ipdltype.isIPDL() and (ipdltype.isArray() or
> ipdltype.isShmem() or
> ipdltype.isByteBuf() or
> ipdltype.isEndpoint())
Refers to ByteBuf which is not ByteBuffer.
Assignee | ||
Comment 4•7 years ago
|
||
After a bit more than a day of refactoring and going through compile errors, the current status is:
- IPDL doesn't support move-only types in structures and enum (only directly as message arguments)
- IPDL doesn't support serializing nsTArrays of move-only types either due to the array being passed as a const reference while serializing (see generated PFoo::Write(const nsTarray<ByteBuf>&, Message*)) which requires the ParamTrait::Write to be const (which we explicitly don't want here).
Updated•7 years ago
|
Blocks: stage-wr-nightly
Updated•7 years ago
|
Whiteboard: [wr-mvp] → [wr-reserve]
Assignee | ||
Comment 5•7 years ago
|
||
This got replaced by bug 1405824 (for now) due to IPDL's allergy to non-copyable types.
Priority: P1 → P3
Updated•7 years ago
|
Priority: P3 → P2
Reporter | ||
Updated•6 years ago
|
No longer blocks: stage-wr-nightly
Assignee | ||
Comment 6•6 years ago
|
||
I don't plan to work on this any time soon and bug 1405824 was fixed some other way so closing.
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → WONTFIX
Updated•2 years ago
|
Blocks: wr-displaylist-perf
You need to log in
before you can comment on or make changes to this bug.
Description
•