Mus: Compositing and Input
Kirkland, 2017/04/25
What's Mus Anyway?
- Part of the Servicification effort
- The Mojo UI Service
- Arbitrary embedding tree
- Centralized input dispatching
- Centralized compositing and rasterization
- First class OOPIF support
- 'Cause Speed
Aside: What's Servicification?
- Servicification is “the migration from monolithic legacy applications into service-based components”
https://en.wiktionary.org/wiki/servicification
- In other words: splitting a monolithic Chrome browser up into components.
- Mojo is fancy IPC to glue the components together
- Why do this?
- To further deliver on the Chrome promise:
- Speed
- Simplicity
- Security
- Stability
Servicified Chrome
Aside: Naming
- Mus is divided into two cooperating services
services/ui
aka the window server
- Window embedding tree
- Event targeting
- Event dispatching
services/viz
aka the mus gpu process
- Compositing
- Rasterization
- Display management
- Hit testing support
Centralized Event Dispatching
Centralized Graphics
First Class OOPIFs
Mus Roadmap
- Mushrome:
- Separate WS, VIZ processes
- Mojo gpu service, compositor interface
- (Begin?) Relocating the Display Compositor
- Tadpole/Mus+Ash:
- separate Ash
- Relocated the Display Compositor to VIZ
- Begin relocating rasterization to VIZ
- Salamander:
- Rasterization centralized in VIZ
- Centralized Layer Compositor in VIZ
- Central graphics scheduling
Chrome Now
Mushrome
Process Separation Forces Improvements
- CompositorFrame transport:
- Chrome UI submits CFs via call
- but Mushrome UI submits CFs via IPC
- Mitigate with improved CF transport
- Side benefit: improved renderer performance
- Event targeting using cached information:
DelegatedFrameHost
directly interrogates surface data for event targeting
- but surface data now only in VIZ
- Mitigate with event targeting data sourced from blink
- Side benefit: corrects for layer squashing targeting errors
Tadpole
Inside VIZ
Direct Compositing and Vulkan!
After Tadpole: Central Compositor
Salamander
Summary
- Part of the Servicification effort
- Tadpole
- Centralizes DisplayCompositor
- Enables direct rendering: Vulkan
- Improves OOPIF support
- GPU Raster: Direct GL or Vulkan
- Salamander
- Centralized LayerCompositor
- Global raster occlusion
- Efficient OOPIF support
- Single graphics scheduling point