Closed Bug 1777872 Opened 2 years ago Closed 2 years ago

Performance regression when rendering PDFs from bug 1056532

Categories

(Core :: Graphics: Canvas2D, defect)

defect

Tracking

()

RESOLVED FIXED
104 Branch
Performance Impact ?
Tracking Status
firefox-esr91 --- unaffected
firefox-esr102 --- disabled
firefox102 --- disabled
firefox103 --- disabled
firefox104 --- fixed

People

(Reporter: marco, Assigned: lsalzman)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: regression)

Attachments

(1 file)

The rendering for the reduced test case from bug 1056532 comment 3 takes ~1 second for me on Linux.

The rendering of page 35 of the original PDF from bug 1056532 comment 0 (or directly bug 1056532 comment 1) is pretty slow too.

See Also: → 1056532

Set release status flags based on info from the regressing bug 1770088

:lsalzman, since you are the author of the regressor, bug 1770088, could you take a look?
For more information, please visit auto_nag documentation.

Flags: needinfo?(lsalzman)
Blocks: gpu-canvas
Depends on: 1777426
Flags: needinfo?(lsalzman)
See Also: → 1777681

When rendering large and/or fullscreen Canvas2Ds, excessive time can be spent
in calls to TexImage/ReadPixels copying into and out of Shmems to the separate
buffer for DrawTargetSkia. To alleviate this, we can make the DrawTargetSkia
directly wrap the Shmem, so that calls to TexImage/ReadPixels then directly
read or write to this without any separate copy. We modify RawTexImage to use
the IPDL SendTexImage path so that Shmems can be sent via SurfaceDescriptor.
Since SendTexImage is nominally async (which is beneficial), we rely on a
call to GetError later to verify that the Shmem processing is completely before
we further modify the DrawTargetSkia. We further add a ReadPixelsIntoShmem IPDL
call to allow sending the Shmem in the other direction directly.

Assignee: nobody → lsalzman
Status: NEW → ASSIGNED
Pushed by lsalzman@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/2c17688069a7
Use Shmem for backing DrawTargetWebgl's Skia target. r=jgilbert

Backed out for causing mochitest failures in browser_rules_flexbox-highlighter-on-mutation.js

  • Backout link
  • Push with failures
  • Failure Log
  • Failure line: PROCESS-CRASH | devtools/client/inspector/rules/test/browser_rules_flexbox-highlighter-on-mutation.js | application crashed [@ mozilla::dom::ReadPixelsBuffer::operator unsigned long&()]
Flags: needinfo?(lsalzman)
Flags: needinfo?(lsalzman)
Pushed by lsalzman@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/458aae4c5d0a
Use Shmem for backing DrawTargetWebgl's Skia target. r=jgilbert

Backed out for causing mochitest failures on Shmem.cpp

Failure line: Assertion failure: mSegment (null segment), at /builds/worker/checkouts/gecko/ipc/glue/Shmem.cpp:249

Push with failures

Failure log

Backout link

[task 2022-07-12T08:51:29.322Z] 08:51:29     INFO - TEST-START | devtools/client/inspector/rules/test/browser_rules_flexbox-highlighter-on-mutation.js
[task 2022-07-12T08:51:29.389Z] 08:51:29     INFO - GECKO(1630) | [Child 1751: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7f67da184800 == 2 [pid = 1751] [id = 6]
[task 2022-07-12T08:51:29.390Z] 08:51:29     INFO - GECKO(1630) | [Child 1751: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 3 (7f67f5191d90) [pid = 1751] [serial = 17] [outer = 0]
[task 2022-07-12T08:51:29.392Z] 08:51:29     INFO - GECKO(1630) | [Child 1751: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 4 (7f67da184c00) [pid = 1751] [serial = 18] [outer = 7f67f5191d90]
[task 2022-07-12T08:51:29.409Z] 08:51:29     INFO - GECKO(1630) | [Child 1786, Main Thread] WARNING: '!CanHandleWith(aPresContext)', file /builds/worker/checkouts/gecko/dom/events/IMEStateManager.cpp:498
[task 2022-07-12T08:51:29.470Z] 08:51:29     INFO - GECKO(1630) | [Child 1967: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 2 (7f2f28b91d90) [pid = 1967] [serial = 1] [outer = 0] [url = http://example.com/browser/devtools/client/inspector/rules/test/doc_filter.html]
[task 2022-07-12T08:51:29.470Z] 08:51:29     INFO - GECKO(1630) | [Child 1967: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 1 (7f2f12b8e400) [pid = 1967] [serial = 3] [outer = 0] [url = http://example.com/browser/devtools/client/inspector/rules/test/doc_filter.html]
[task 2022-07-12T08:51:29.470Z] 08:51:29     INFO - GECKO(1630) | [Child 1967: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 0 (7f2f12b8c800) [pid = 1967] [serial = 2] [outer = 0] [url = about:blank]
[task 2022-07-12T08:51:29.471Z] 08:51:29     INFO - GECKO(1630) | [Child 1967, Main Thread] WARNING: Extra shutdown CC: 'i < NORMAL_SHUTDOWN_COLLECTIONS', file /builds/worker/checkouts/gecko/xpcom/base/nsCycleCollector.cpp:3359
[task 2022-07-12T08:51:29.476Z] 08:51:29     INFO - GECKO(1630) | [Child 1967, Main Thread] WARNING: NS_ENSURE_TRUE(InitStaticMembers()) failed: file /builds/worker/workspace/obj-build/dist/include/mozilla/Preferences.h:129
[task 2022-07-12T08:51:29.497Z] 08:51:29     INFO - GECKO(1630) | [Child 1967, Main Thread] WARNING: NS_ENSURE_TRUE(Preferences::InitStaticMembers()) failed: file /builds/worker/checkouts/gecko/modules/libpref/Preferences.cpp:4595
[task 2022-07-12T08:51:29.537Z] 08:51:29     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 22 (7f586fda6650) [pid = 1630] [serial = 41] [outer = 0] [url = about:devtools-toolbox]
[task 2022-07-12T08:51:29.539Z] 08:51:29     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 21 (7f586fda6d90) [pid = 1630] [serial = 44] [outer = 0] [url = chrome://devtools/content/inspector/index.xhtml]
[task 2022-07-12T08:51:29.580Z] 08:51:29     INFO - GECKO(1630) | [Child 1751: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 5 (7f67da183800) [pid = 1751] [serial = 19] [outer = 7f67f5191d90]
[task 2022-07-12T08:51:29.902Z] 08:51:29     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 20 (7f586fda76a0) [pid = 1630] [serial = 46] [outer = 0] [url = chrome://devtools/content/inspector/markup/markup.xhtml]
[task 2022-07-12T08:51:29.956Z] 08:51:29     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7f5869080400 == 9 [pid = 1630] [id = 23]
[task 2022-07-12T08:51:29.958Z] 08:51:29     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 21 (7f586e0592b0) [pid = 1630] [serial = 55] [outer = 0]
[task 2022-07-12T08:51:29.960Z] 08:51:29     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 22 (7f5869081c00) [pid = 1630] [serial = 56] [outer = 7f586e0592b0]
[task 2022-07-12T08:51:30.030Z] 08:51:30     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 23 (7f586fdcbc00) [pid = 1630] [serial = 57] [outer = 7f586e0592b0]
[task 2022-07-12T08:51:30.162Z] 08:51:30     INFO - GECKO(1630) | [Parent 1630, Main Thread] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005 (NS_ERROR_FAILURE): file /builds/worker/checkouts/gecko/dom/base/nsContentUtils.cpp:4063
[task 2022-07-12T08:51:30.377Z] 08:51:30     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7f586fdca400 == 10 [pid = 1630] [id = 24]
[task 2022-07-12T08:51:30.378Z] 08:51:30     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 24 (7f586fda7c10) [pid = 1630] [serial = 58] [outer = 0]
[task 2022-07-12T08:51:30.379Z] 08:51:30     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 25 (7f586fdcb000) [pid = 1630] [serial = 59] [outer = 7f586fda7c10]
[task 2022-07-12T08:51:30.395Z] 08:51:30     INFO - GECKO(1630) | [Parent 1630, Main Thread] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005 (NS_ERROR_FAILURE): file /builds/worker/checkouts/gecko/chrome/nsChromeRegistry.cpp:180
[task 2022-07-12T08:51:30.396Z] 08:51:30     INFO - GECKO(1630) | [Parent 1630, Main Thread] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005 (NS_ERROR_FAILURE): file /builds/worker/checkouts/gecko/dom/security/nsCSPService.cpp:190
[task 2022-07-12T08:51:31.047Z] 08:51:31     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7f586fdd1400 == 11 [pid = 1630] [id = 25]
[task 2022-07-12T08:51:31.049Z] 08:51:31     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 26 (7f586fda6650) [pid = 1630] [serial = 60] [outer = 0]
[task 2022-07-12T08:51:31.049Z] 08:51:31     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 27 (7f587117c400) [pid = 1630] [serial = 61] [outer = 7f586fda6650]
[task 2022-07-12T08:51:31.065Z] 08:51:31     INFO - GECKO(1630) | [Parent 1630, Main Thread] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005 (NS_ERROR_FAILURE): file /builds/worker/checkouts/gecko/chrome/nsChromeRegistry.cpp:180
[task 2022-07-12T08:51:31.065Z] 08:51:31     INFO - GECKO(1630) | [Parent 1630, Main Thread] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005 (NS_ERROR_FAILURE): file /builds/worker/checkouts/gecko/dom/security/nsCSPService.cpp:190
[task 2022-07-12T08:51:31.374Z] 08:51:31     INFO - GECKO(1630) | [Child 1786: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7f8890749c00 == 1 [pid = 1786] [id = 3] [url = about:blank]
[task 2022-07-12T08:51:31.506Z] 08:51:31     INFO - GECKO(1630) | [Child 1786: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 3 (7f88ab991f60) [pid = 1786] [serial = 8] [outer = 0] [url = about:blank]
[task 2022-07-12T08:51:31.574Z] 08:51:31     INFO - GECKO(1630) | [Child 1751, Main Thread] WARNING: '!CanHandleWith(aPresContext)', file /builds/worker/checkouts/gecko/dom/events/IMEStateManager.cpp:498
[task 2022-07-12T08:51:31.827Z] 08:51:31     INFO - GECKO(1630) | console.log: "[DISPATCH] action type:" "CLEAR_FLEXBOX"
[task 2022-07-12T08:51:31.846Z] 08:51:31     INFO - GECKO(1630) | console.log: "[DISPATCH] action type:" "UPDATE_GRIDS"
[task 2022-07-12T08:51:32.066Z] 08:51:32     INFO - GECKO(1630) | console.log: "[DISPATCH] action type:" "UPDATE_OFFSET_PARENT"
[task 2022-07-12T08:51:32.087Z] 08:51:32     INFO - GECKO(1630) | console.log: "[DISPATCH] action type:" "UPDATE_LAYOUT"
[task 2022-07-12T08:51:32.347Z] 08:51:32     INFO - GECKO(1630) | console.log: "[DISPATCH] action type:" "UPDATE_OFFSET_PARENT"
[task 2022-07-12T08:51:32.395Z] 08:51:32     INFO - GECKO(1630) | [Parent 1630, CanvasRenderer] WARNING: robust_buffer_access_behavior marked as unsupported: file /builds/worker/checkouts/gecko/gfx/gl/GLContextFeatures.cpp:632
[task 2022-07-12T08:51:32.401Z] 08:51:32     INFO - GECKO(1630) | [Parent 1630, CanvasRenderer] WARNING: Robustness supported, strategy is not LOSE_CONTEXT_ON_RESET!: file /builds/worker/checkouts/gecko/gfx/gl/GLContext.cpp:995
[task 2022-07-12T08:51:32.402Z] 08:51:32     INFO - GECKO(1630) | [Parent 1630, CanvasRenderer] WARNING: robustness marked as unsupported: file /builds/worker/checkouts/gecko/gfx/gl/GLContextFeatures.cpp:632
[task 2022-07-12T08:51:32.408Z] 08:51:32     INFO - GECKO(1630) | console.log: "[DISPATCH] action type:" "UPDATE_LAYOUT"
[task 2022-07-12T08:51:32.754Z] 08:51:32     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7f586fdc6400 == 10 [pid = 1630] [id = 21] [url = chrome://devtools/content/inspector/index.xhtml]
[task 2022-07-12T08:51:32.756Z] 08:51:32     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7f5871176400 == 9 [pid = 1630] [id = 22] [url = chrome://devtools/content/inspector/markup/markup.xhtml]
[task 2022-07-12T08:51:32.757Z] 08:51:32     INFO - GECKO(1630) | [Parent 1630: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7f586fdc5400 == 8 [pid = 1630] [id = 20] [url = about:devtools-toolbox]
[task 2022-07-12T08:51:32.796Z] 08:51:32     INFO - GECKO(1630) | Assertion failure: mSegment (null segment), at /builds/worker/checkouts/gecko/ipc/glue/Shmem.cpp:249
[task 2022-07-12T08:51:32.802Z] 08:51:32     INFO -  Initializing stack-fixing for the first stack frame, this may take a while...
[task 2022-07-12T08:51:38.704Z] 08:51:38     INFO - GECKO(1630) | #01: mozilla::ipc::Shmem::AssertInvariants() const [ipc/glue/Shmem.cpp:249]
[task 2022-07-12T08:51:38.707Z] 08:51:38     INFO - GECKO(1630) | #02: mozilla::ipc::Shmem::RevokeRights(mozilla::ipc::Shmem::PrivateIPDLCaller) [ipc/glue/Shmem.cpp:265]
[task 2022-07-12T08:51:38.714Z] 08:51:38     INFO - GECKO(1630) | #03: mozilla::ipc::IPDLParamTraits<mozilla::ipc::Shmem>::Write(IPC::MessageWriter*, mozilla::ipc::IProtocol*, mozilla::ipc::Shmem&&) [ipc/glue/Shmem.cpp:441]
[task 2022-07-12T08:51:38.714Z] 08:51:38     INFO - GECKO(1630) | #04: mozilla::dom::PWebGLParent::OnMessageReceived(IPC::Message const&, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >&) [s3:gecko-generated-sources:fb21635550cfa7f400b7ec48def57ba476249f1b93002e41943342ef29d8fd49b87f4488835903789ae29e9b34a3c888a46b86eb6c338691f92963935fd42a56/ipc/ipdl/PWebGLParent.cpp::561]
[task 2022-07-12T08:51:38.714Z] 08:51:38     INFO - GECKO(1630) | #05: mozilla::gfx::PCanvasManagerParent::OnMessageReceived(IPC::Message const&, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >&) [s3:gecko-generated-sources:88edb925c0752f121964049f1b2c2b090af476a418e4935ade351735ca019d736b4ab39c6ae4cac2b67ce5f50bb871006eab0a9191d2989a3f3d0f082a76cd1f/ipc/ipdl/PCanvasManagerParent.cpp::377]
[task 2022-07-12T08:51:38.714Z] 08:51:38     INFO - GECKO(1630) | #06: mozilla::ipc::MessageChannel::DispatchSyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >&) [ipc/glue/MessageChannel.cpp:1716]
[task 2022-07-12T08:51:38.715Z] 08:51:38     INFO - GECKO(1630) | #07: mozilla::ipc::MessageChannel::DispatchMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >) [ipc/glue/MessageChannel.cpp:1672]
[task 2022-07-12T08:51:38.715Z] 08:51:38     INFO - GECKO(1630) | #08: mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::ipc::MessageChannel::MessageTask&) [ipc/glue/MessageChannel.cpp:1474]
[task 2022-07-12T08:51:38.715Z] 08:51:38     INFO - GECKO(1630) | #09: mozilla::ipc::MessageChannel::MessageTask::Run() [ipc/glue/MessageChannel.cpp:1581]
Flags: needinfo?(lsalzman)
Flags: needinfo?(lsalzman)
Pushed by lsalzman@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/2ac99e5c0b54
Use Shmem for backing DrawTargetWebgl's Skia target. r=jgilbert
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 104 Branch
Regressions: 1779342
Regressions: 1779776
Regressions: 1779766
Blocks: 1748120
Blocks: 1773280
See Also: → 1801539
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: