1 Introduction
1.1 Background
Over the years 2010 to 2016, the resolution of hand-held devices increased significantly. For example, the
resolution of Samsung Galaxy S up to Samsung Galaxy S6 is shown in figure 1.1, similar advancement can be
observed for most other mobile devices as well. This increase in pixel count causes a significant increase in
memory usage for buffered screen rendering. Storing a buffer using a 32-bit RGBA format requires four bytes
per pixel, for a Quad HD display with 2560
×
1440
≈
4 million pixels that means a single full-screen buffer
requires almost 15 megabytes of memory. Depending on how much render buffering an application uses, this
can add up to a significant amount of the total memory usage.
Figure 1.1: Samsung Galaxy device resolution
2010 2011 2012 2013 2014 2015
1
2
3
4
Year
Pixel Count (millions)
Any web browser based on the rendering engine in Chromium uses a significant amount of memory for render
buffers due to how web page rendering is implemented. The rendering engine in Chromium is designed to
handle everything from the simplest piece of black text on white background to very complex websites. This
means that rendering can be very expensive depending on what content is being displayed. To support smooth
scrolling, among other things, the browser divides the web site (including non-visible parts) into parts referred
to as tiles. Thus, tiles that are already rendered do not have to be rendered again if the page is scrolled by the
user. Also, when the page is scrolled it is beneficial if the tiles that are scrolled into view are pre-rendered so
that they appear instantly to the user and not after a delay due to rendering. However, buffering the tiles can
require a significant amount of memory.
Opera Software ASA who develops several Chromium based products, among them Opera for Android,
have made attempts at optimizing the memory used for tiles by using compression. Compression helps directly
with the memory usage as the data is stored with fewer bytes, but it comes with its own set of problems. For
example the previous work by Opera has problems related to quality due to the use of lossy compression and
performance problem due to the design of the used compression formats. The purpose of this project is to
continue Opera’s previous work and evaluate to what extent it is feasible to compress the buffered tiles in
real-time to save memory.
1.2 Problem
For compression to be usable in the browser it must not compromise the user experience. Thus, no human
noticeable loss in quality is tolerated and the performance must be high enough such that there is almost no
noticeable delay before displaying a page compared to using no compression. This poses a challenge since data
compression in general is a computationally expensive problem. Another problem is that the web contains
most of all conceivable types of graphics such as: text, gradients, solid colors, sharp and soft edges, chromatic
variance, transparency, low frequency and high frequency. Since image compression relies on being able to
1