Auto merge of #26077 - jdm:xr-canvas-dirty, r=asajeffrey

webgl: Don't dirty canvas element while in immersive mode.

There are various WebGL APIs that are supposed to trigger a frame composite at the end of the event loop when they're used. We enforce this via dirtying the canvas element and ensuring that reflow occurs for normal content. This is redundant when we're using immersive mode and incurs extra work by the layout thread and compositor that inhibits the immersive rendering performance.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix (part of) #26019
- [x] These changes do not require tests because we do not have infrastructure to test immersive mode on CI.
This commit is contained in:
bors-servo 2020-03-31 22:23:32 -04:00 committed by GitHub
commit 2c0bbcf2aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 0 deletions

View file

@ -2252,6 +2252,14 @@ impl Window {
pub fn webrender_document(&self) -> DocumentId {
self.webrender_document
}
pub fn in_immersive_xr_session(&self) -> bool {
self.navigator
.get()
.as_ref()
.and_then(|nav| nav.xr())
.map_or(false, |xr| xr.pending_or_active_session())
}
}
impl Window {