The Raspberry Pi Browser Presented by Gustavo (kov) & ChangSeok - - PowerPoint PPT Presentation

the raspberry pi browser
SMART_READER_LITE
LIVE PREVIEW

The Raspberry Pi Browser Presented by Gustavo (kov) & ChangSeok - - PowerPoint PPT Presentation

The Raspberry Pi Browser Presented by Gustavo (kov) & ChangSeok (changseok) Brought to you by Marco Barisione, Emanuele Aina, Julien Isorce, ChangSeok OH, Tomeu Visozo, George Kiagiadakis, Andre Magalhes, Gustavo Noronha Extra


slide-1
SLIDE 1

The Raspberry Pi Browser

Presented by Gustavo (kov) & ChangSeok (changseok) Brought to you by Marco Barisione, Emanuele Aina, Julien Isorce, ChangSeok OH, Tomeu Visozo, George Kiagiadakis, Andre Magalhães, Gustavo Noronha

Extra information 1

slide-2
SLIDE 2

The Raspberry Pi

Extra information 2

Cheap hardware, not very powerful

  • ARM v6 CPU
  • Up to 512 MB of RAM
  • Reasonably powerful VideoCore media processor
slide-3
SLIDE 3

Challenge

Extra information 3

Make a modern browser that runs well enough to be usable

  • Multiple tabs
  • Responsive
  • Support YouTube
slide-4
SLIDE 4

Limitations

Extra information 4

Drivers and concerns

  • WebKit2 out of the question for worries of memory

usage overhead (working on it…)

  • Accelerated Compositing out, unreliable GL stack
  • Wayland postponed
slide-5
SLIDE 5

Memory usage

Extra information 5

Epiphany gets tab limits

  • Up to 3 tabs are kept live
  • Background tabs may get freed
  • Per-tab session restore infrastructure reused to reload

tabs that got freed when switched to

  • For the future, could make Epiphany kill web

processes, with WebKit2

slide-6
SLIDE 6

Memory usage

Extra information 6

Memory pressure handler

  • Notification from the system which allows throwing

away caches and other temporary memory when memory is becoming very scarce

  • Implemented by Apple for Mac & iOS ports
  • Patch on bug 123532
  • Problem: only works when inside a cgroup
slide-7
SLIDE 7

Memory usage

Extra information 7

Disk Image Cache

  • Saves decoded images to files and memory maps them
  • Plugs the main source of heap fragmentation – process

memory usage grows much less

  • A bit different: Apple uses it for non-decoded image

data

  • Made cross-platform on bug 124167
  • Gustavo would like to finish this patch and enable it on

WebKit2GTK+, need to discuss API

slide-8
SLIDE 8

Performance

Extra information 8

Use RGB16 throughout

  • This is the format cairo and pixman have been
  • ptimized for on the raspberry pi
  • All surfaces changed to use it
  • GStreamer backend changed to render to it directly
  • Image decoders changed to decode to it directly
slide-9
SLIDE 9

Performance

Extra information 9

OMX and dispmanx usage

  • OMX used for image decoding
  • OMX used for video scaling
  • dispmanx used directly for fullscreen video
slide-10
SLIDE 10

Performance

Extra information 10

Faster scrolling

  • Tiled backing store enabled to make scrolling more

responsive

  • Suspends pretty much everything while scrolling – JS,

animation, painting

slide-11
SLIDE 11

Performance

Extra information 11

Videos made faster

  • First of all, no preloading, special case for embedded

YouTube videos

  • Videos are painted directly to the final surface instead
  • f going through the tiled backing store
  • YouTube hacked by injected JS to always use a

<video> tag and to avoid running lots of its own JS code, in particular the one that deals with loading comments

slide-12
SLIDE 12

Questions?

Extra information 12

ChangSeok OH changseok.oh@collabora.co.uk Gustavo Noronha Silva gustavo.noronha@collabora.co.uk