Mobile/Layers

From MozillaWiki
< Mobile
Revision as of 20:38, 1 September 2010 by Cgj (talk | contribs) (→‎2.0 b1 TODO)
Jump to navigation Jump to search

See also Gecko:CrossProcessLayers.

Pre-Fennec work

  • "shadow" layer trees (parent's reference to a child's tree) hooked into frame or widget code; currently they're only hooked into testing code. We need to associate TabChilds' shadow layer trees with their frames/widgets in the browser process.
  • BasicThebesLayer pixel data shared efficiently with its BasicShadowThebesLayer (needed for realistic performance testing)

Fennec-specific work

2.0 b1 TODO

  • (stechz) remove TileManager.js entirely
  • (blassey?) band-aid for popup widgets in content processes
  • (cjones) retained-content-only layer transactions
  • double-tap zoom
  • forward <browser> keyboard events (seems to be working?)
  • stop OOM'ing --- likely something is leaking, if not (address-space fragmentation?) we'll need "smarter allocation ..." below
  • shadow layer perf work
    • PROFILE MEASURE PROFILE
    • bug 570625 make ThebesLayer paint directly into shareable surfaces, remove third buffer
    • bug 523172 non-sucky "basic" shmem backend for android, flush existing down the toilet
    • (no bug) track updated region, only blit that from back --> front
      • ... unless measurements says we mostly just update the entire surface, in which case swapping and always repainting would be better
    • (no bug) smarter allocation of ThebesLayer backing buffers
    • drawing scale-zoomed layers should not be slow

2.0 b1 nice-to-have

  • hacky slow fallback path for scrolling subframes (e.g. mobile gmail), only on pages with scrollable subframes
  • (no bug) draw a "checkerboard" or other indicator over waiting-to-be-filled regions
  • (no bug) make CanvasLayer paint directly into shareable surfaces, remove third buffer
  • don't draw the caret in the content process

2.0 musts

  • compositing Basic*Layer tree published by content, using GL/EGL in the browser process
  • HW-accelerated video that bypasses content-process main thread
  • fast scrolling of subframes
  • better support for position:fixed elements
  • WebGL? proxied?
  • fast plugin drawing? that bypasses content-process main thread?

Questions that come with using browser element

  • Where does panning and kinetic panning live?
    • Ben: hopefully as javascript in browser binding
  • Where will handling of zoom metadata live?
  • Where will the tap => element code live (including better link clicking and transforming coordinates for zoom level)?
  • Where does double-tap to zoom live?
  • Where does double-click simulation live? Nokia devices didn't support a native double click event. Maybe we still need to do some form of event re-dispatching to browser elements.
  • Where does tap highlighting live? I think webkit has a tap-highlight-color CSS property.

Other questions

  • What is the proper behavior for position: fixed elements when there is an additional displayport on top of the CSS viewport?
    • what do other browsers with displayport-type things do?
      • MicroB fixes wrt displaport, hides on pan, shows when pan finishes
      • mobilesafari appears to basically ignore position:fixed wrt displayport

Building

hg clone http://hg.mozilla.org/projects/cedar
cd cedar
hg clone http://hg.mozilla.org/users/bstover_mozilla.com/mobile2 mobile

From there, a normal opt or debug build will work.