* Use special WGPU poller thread for poll_all_devices
* Switch to latest wgpu
This is required to fix some deadlocks.
* non-blocking poll unconditionally
* small fixes
This is a fix for the crash issue in 64-bit ARM [#32175][1].
When targeting Android 11 and above, 64-bit ARM platforms
have the 'Tagged Pointer' feature enabled by default which
causes memory allocated using the system allocator to have
a non-zero 'tag' set in the highest byte of heap addresses.
This is incompatible with SpiderMonkey which assumes that
only the bottom 48 bits are set and asserts this at various
points.
Both Servo and Gecko have a similar architecture where
the pointer to a heap allocated DOM struct is encoded as
a JS::Value and stored in the DOM_OBJECT_SLOT (reserved
slot) of the JSObject which reflects the native DOM struct.
As observed in #32175, even Gecko crashes with `jemalloc`
disabled which suggests that support for using the native
system allocator with tagged pointers enabled by default
is not present at the moment.
[1]: https://github.com/servo/servo/issues/32175
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Fix the HTML event-loop: add a update the rendering task
add rendering task source
sketch structure to update the rendering
resize steps
composition events
fix warnings in rendering task source
refactor handling of composition events: put window and doc for pipeline on top
set script as user interacting in update the rendering task
fmt
add todos for other steps, put all compositor handling logic in one place
update the rendering: evaluate media queries and report changes
update the rendering: update animations and send events
update the rendering: run animation frames
update the rendering: order docs
put rendering related info on documents map
tidy
update the rendering: add issue numbers to todos
update the rendering: reflow as last step
update the rendering: add todo for top layer removals
note rendering opportunity when ticking animations for testing
fix double borrow crash in css/basic-transition
fix faster reversing of transitions test
undo ordering of docs
bypass not fully-active pipeline task throttling for rendering tasks
ensure tasks are dequed from task queue
prioritize update the rendering task
remove servo media stuff from set activity
tidy
debug
update the rendering: perform microtask checkpoint after task
tidy-up
only run evaluate media queries if resized
re-add evaluation of media queries for each rendering task, re-prioritize rendering tasks, re-add microtask checkpoint for all sequential messages
re-structure resize steps, and their interaction with evaluating media queries and reacting to environment changes
update the rendering: remove reflow call at the end
update webmessaging expectations
update to FAIL /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html
update to FAIL load-pageshow-events-window-open.html
add issue number for ordering of docs
nits
move batching of mouse move event to document info
nits
add doc for mouse move event index
reset mouse move event index when taking pending compositor events
fix replacing mouse move event
nits
* move update the rendering related data to document
* move re-taking of tasks to try_recv
* address nits
* change task queue try_recv into take_tasks_and_recv, with nits
* refactor process_pending_compositor_events
* when updating the rendering, return early if script cannot continue running
* use an instant for the last render opportunity time
* nits
* remove handle_tick_all_animations
* use a vec for pending resize and compositor events
* fix spec links
* Fix a few other nits before landing
---------
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
* Fix clippy in components/script
warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do (components/script/dom/htmlformelement.rs:896:20)
warning: `Box::new(_)` of default value (components/script/dom/paintworkletglobalscope.rs:291:29)
warning: this creates an owned instance just for comparison (components/script/dom/radionodelist.rs:105:50)
* Fix clippy in layout_thread (2013 and 2020)
warning: this `if` statement can be collapsed (components/layout_thread/lib.rs:876:17)
warning: the following explicit lifetimes could be elided: 'a (components/layout_thread/lib.rs:239 and 2020 same line)
warning: deref which would be done by auto-deref (components/layout_thread/lib.rs:500 and 1289)
warning: dereferencing a tuple pattern where every element takes a reference (components/layout_thread/lib.rs:503,1562 and 2020 line 1153)
warning: useless conversion to the same type: `style::invalidation::element::restyle_hints::RestyleHint` (components/layout_thread_2020/lib.rs:742:36)
* Fix clippy in components/servo
warning: constants have by default a `'static` lifetime (components/servo/lib.rs:1238:31)
warning: creating a `let` binding to a value of unit type, which usually
can't be used afterwards (5 occurances in components/servo/lib.rs)
* FIx clippy in ports/servoshell
warning: this expression creates a reference which is immediately dereferenced by the compiler (ports/servoshell/app.rs:251:89)
warning: using `clone` on type `Option<TopLevelBrowsingContextId>` which implements the `Copy` trait (ports/servoshell/webview.rs:122:9)
* Update wgpu to 0.20
* good expectations
* Throw TypeError in configure on unsupported format instead of panic
* Expect
* `into_command_buffer_id`,`into_command_encoder_id`
Simply installing 'clang' installs the default version of Clang for
Linux. For instance, the command: 'apt install clang' installs
'clang-14' in Ubuntu 22.04.
It might be possible that a more recent version of clang is
already installed in the system. For instance, package 'clang-17'.
In the case a 'clang' binary is already installed in the system, skip
the installation of 'clang'.
* Devtools device description: fix the case of the 'platformversion' property
* Devtools device description: expose the properties Firefox expects for the display name and version of the server
When connecting to Servo from Firefox (about:debugging), it will display "Servo (71.0)" instead of "{$name} (${version})".
* Devtools device description: update versions to match those in the UA string
* Devtools device description: expose a property (appbuildid) Firefox expects to compare versions for compatibility (_compareVersionCompatibility function)
* Devtools device description: advertise a current platform version to remove the incompatibility warning in Firefox's about:debugging
* Devtools preference actor: fix retrieving the actual preference by its key
* Devtools preference actor: translate Firefox preference names onto the corresponding Servo preference names
* Devtools device description: downgrade the platform version to prevent a confusing warning in about:debugging if the build ID is newer than that of Firefox (likely)
* Devtools device description: add comments
* Devtools device description: use CARGO_PKG_VERSION for the user-visible version number