Confirmed users
699
edits
| Line 60: | Line 60: | ||
= Important cases on fennec = | = Important cases on fennec = | ||
Will the browser process need to see all layers in a content process, or just a single container/image/screen layer? Need plan for optimal performance (responsiveness and frame rate) for the following cases. | <s>Will the browser process need to see all layers in a content process, or just a single container/image/screen layer?</s> We always want video in their own layers to decouple framerate from content- and browser-process main-thread work. So at minimum, we need to publish a tree consisting of a layer "below" the video and a layer "above" the video. Need plan for optimal performance (responsiveness and frame rate) for the following cases. | ||
* '''Panning''': browser immediately translates coords of | * '''Panning''': browser immediately translates coords of container layer before delivering event to content process. Content (or browser) later uses event to update region painting heuristics. | ||
* '''Volume rocker zoom''': browser immediately sets scaling matrix for | * '''Volume rocker zoom''': browser immediately sets scaling matrix for container layer (fuzzy zoom). Content (or browser) later uses event to update region painting heuristics. | ||
* '''Double-tap zoom''' | * '''Double-tap zoom''' | ||
** Question: How long does it typically take to determine the zoom target? | ** Question: How long does it typically take to determine the zoom target? | ||
** Container layer: can we use layer-tree heuristics to do a fuzzy zoom while content process figures out target? (Better perceived responsiveness.) Might want three-step process: (i) send event to content process, have it determine new viewport (?); (ii) publish that update to browser, browser initiates fuzzy scale; (iii) content process initiates "real" upscale. | |||
** Container layer: can we use layer-tree heuristics to do a fuzzy zoom while content process figures out target? (Better perceived responsiveness) | * '''Video''': video layers directly connect to the compositor process from off-main-thread in the content process, so that new frames can be published independently of content- and browser-process main threads. | ||
* '''canvas''': Initially can store in SysV shmem. Better would be mapping memory accessible by the video card in a privileged process (e.g. bc-cat), and sharing this mapping to the content process. | |||
* '''CSS transforms and SVG filters''': low priority, assume SW-only in content process for now. CSS transforms might be easy to accelerate, SVG filters may never be (Bas cites problems with the N900's GPU). | |||
* | * '''Animations''': low priority, not discussed wrt fennectrolysis. | ||
* '''canvas''': | |||
* '''CSS transforms and SVG filters''': | |||
* '''Animations''': | |||
<s>Question: for a given layer subtree, can reasonably guess how expensive the transformation/compositing operations will take in CPU and GPU time? Could use this information for distributed scheduling.</s> Low priority. | |||
Question: for a given layer subtree, can reasonably guess how expensive the transformation/compositing operations will take in CPU and GPU time? Could use this information for distributed scheduling. | |||
= Concurrency model for remote layers = | = Concurrency model for remote layers = | ||