<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/" 
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
	xmlns:admin="http://webns.net/mvcb/" 
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/" 
	xmlns:atom="http://www.w3.org/2005/Atom">
	
	<channel>
	
		<title>Understanding Hardware Acceleration on Mobile Browsers</title>
		<link>http://www.sencha.com/blog/understanding-hardware-acceleration-on-mobile-browsers</link>
		<description>Our own WebKit genius, Ariya Hidayat, is back to explain what happens behind the scenes with mobile browsers, vector graphics, and shed light on interactions with the GPU.</description>
		<dc:language>en-us</dc:language>
		<dc:creator>ariya@sencha.com</dc:creator>
		<dc:rights>Copyright 2011</dc:rights>
		<dc:date>2011-07-15T17:00:23+00:00</dc:date>
		<admin:generatorAgent rdf:resource="http://expressionengine.com/" />
		<atom:link href="http://www.sencha.com/blog/comments-rss/1045" rel="self" type="application/rss+xml" />
  
		
  
		<item>
      <title>Comment by Iris</title>
      <description>Another great post from you, Ariya!&amp;nbsp; You&#8217;re always so informative</description>
      <content:encoded><![CDATA[<p>Another great post from you, Ariya!&nbsp; You&#8217;re always so informative <img src="/images/smileys/smile.gif" width="19" height="19" alt="smile" style="border:0;" /></p>]]></content:encoded>
      <pubDate>Wed, 17 Aug 2011 20:42 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:25436#date:20:42</guid>
    </item>
  
		<item>
      <title>Comment by engineer</title>
      <description>Bravo, me parece, es la frase admirable  

&amp;nbsp; 
file</description>
      <content:encoded><![CDATA[<p>Bravo, me parece, es la frase admirable  </p>

<p>&nbsp; <br />
file</p>]]></content:encoded>
      <pubDate>Tue, 16 Aug 2011 19:50 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:25392#date:19:50</guid>
    </item>
  
		<item>
      <title>Comment by Ariya Hidayat</title>
      <description>That&#8217;s the outside of the scope of this blog entry, but the short answer is &#8220;it depends&#8221;. For example, some old&#45;generation GPU may have problem with complicated glyphs used to render the text and thus the CPU needs to provide some assistance, e.g. performing path breakdown and simplification. Dual&#45; or quad&#45;core processor, with support for vectorized or data&#45;level parallelism, can perform some initial operations on various graphics algorithm, which would help the GPU a lot.</description>
      <content:encoded><![CDATA[<p>That&#8217;s the outside of the scope of this blog entry, but the short answer is &#8220;it depends&#8221;. For example, some old-generation GPU may have problem with complicated glyphs used to render the text and thus the CPU needs to provide some assistance, e.g. performing path breakdown and simplification. Dual- or quad-core processor, with support for vectorized or data-level parallelism, can perform some initial operations on various graphics algorithm, which would help the GPU a lot.</p>]]></content:encoded>
      <pubDate>Mon, 08 Aug 2011 18:02 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:25027#date:18:02</guid>
    </item>
  
		<item>
      <title>Comment by Mobile Money Machines</title>
      <description>This is a great explanation on quite a tricky topic so thanks for sharing.

I have one quick question if that&#8217;s OK. You mention that when building a browser, MOST of the primitive drawing is delegated to the GPU. Are there any examples of where this is not the case and it is in fact it makes sense to leave the CPU to do the work?

Thanks</description>
      <content:encoded><![CDATA[<p>This is a great explanation on quite a tricky topic so thanks for sharing.</p>

<p>I have one quick question if that&#8217;s OK. You mention that when building a browser, MOST of the primitive drawing is delegated to the GPU. Are there any examples of where this is not the case and it is in fact it makes sense to leave the CPU to do the work?</p>

<p>Thanks</p>]]></content:encoded>
      <pubDate>Sat, 06 Aug 2011 00:50 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:24930#date:00:50</guid>
    </item>
  
		<item>
      <title>Comment by Gaurav Mishra</title>
      <description>Very Robust! explanation
I think need to read that again :&#45; )</description>
      <content:encoded><![CDATA[<p>Very Robust! explanation<br />
I think need to read that again :- )</p>]]></content:encoded>
      <pubDate>Tue, 02 Aug 2011 07:40 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:24769#date:07:40</guid>
    </item>
  
		<item>
      <title>Comment by Trygve Lie</title>
      <description>@Ariya I see. It would be nice if the device / OS vendors would provide some more insight into these subjects. 

I must say I would like to see more live crash tests related to these topics. That might give us some more insight to where the limitations are.</description>
      <content:encoded><![CDATA[<p>@Ariya I see. It would be nice if the device / OS vendors would provide some more insight into these subjects. </p>

<p>I must say I would like to see more live crash tests related to these topics. That might give us some more insight to where the limitations are.</p>]]></content:encoded>
      <pubDate>Tue, 19 Jul 2011 10:52 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:24242#date:10:52</guid>
    </item>
  
		<item>
      <title>Comment by Ariya</title>
      <description>@Trygve I don&#8217;t know the answer to your question. One thing I omitted from the blog entry is the role of the underlying graphics stack. In the case of iOS, CoreAnimation also plays an important role. If it has support for swapping the texture as needed (which I suspect it is the case, though it&#8217;s hard to verify it since CA is not open&#45;source), then it may push and pop the textures as needed, making it more difficult to find out whether a certain textured layer (associated with your element) is eating the GPU memory or not. The way I describe it is usually as follows: all the trick with translate3d/scale3d/opacity just gives a hint (albeit a strong one) to the graphics stack to keep the layer as long as possible in the GPU. Whether it is guaranteed to be the case of not is different story.</description>
      <content:encoded><![CDATA[<p>@Trygve I don&#8217;t know the answer to your question. One thing I omitted from the blog entry is the role of the underlying graphics stack. In the case of iOS, CoreAnimation also plays an important role. If it has support for swapping the texture as needed (which I suspect it is the case, though it&#8217;s hard to verify it since CA is not open-source), then it may push and pop the textures as needed, making it more difficult to find out whether a certain textured layer (associated with your element) is eating the GPU memory or not. The way I describe it is usually as follows: all the trick with translate3d/scale3d/opacity just gives a hint (albeit a strong one) to the graphics stack to keep the layer as long as possible in the GPU. Whether it is guaranteed to be the case of not is different story.</p>]]></content:encoded>
      <pubDate>Mon, 18 Jul 2011 18:14 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:24206#date:18:14</guid>
    </item>
  
		<item>
      <title>Comment by Andrea Cammarata</title>
      <description>Great post!</description>
      <content:encoded><![CDATA[<p>Great post!</p>]]></content:encoded>
      <pubDate>Mon, 18 Jul 2011 15:36 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:24200#date:15:36</guid>
    </item>
  
		<item>
      <title>Comment by Trygve Lie</title>
      <description>Very good post.

It&#8217;s pretty clear that using the GPU does come with a price (memory allocation) as you point out. Is there a good way to / thumb of rule on how to keep control of this memory allocation?

Let&#8217;s take a simple example: Let&#8217;s say we have a document with 20 elements (think flip board) with added translate3d. These elements are intended to be moved from position A to B and we only move one element from A to B at a time. Will all 20 elements allocate memory in the GPU or will memory be allocated only during the animation of a element from A to B?

I would expect that all 20 elements will allocate memory. If so; would an approach where we apply translate3d to the element moved from A to B only during movement be a memory saving approach?</description>
      <content:encoded><![CDATA[<p>Very good post.</p>

<p>It&#8217;s pretty clear that using the GPU does come with a price (memory allocation) as you point out. Is there a good way to / thumb of rule on how to keep control of this memory allocation?</p>

<p>Let&#8217;s take a simple example: Let&#8217;s say we have a document with 20 elements (think flip board) with added translate3d. These elements are intended to be moved from position A to B and we only move one element from A to B at a time. Will all 20 elements allocate memory in the GPU or will memory be allocated only during the animation of a element from A to B?</p>

<p>I would expect that all 20 elements will allocate memory. If so; would an approach where we apply translate3d to the element moved from A to B only during movement be a memory saving approach?</p>]]></content:encoded>
      <pubDate>Mon, 18 Jul 2011 09:25 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:24194#date:09:25</guid>
    </item>
  
		<item>
      <title>Comment by David Kaneda</title>
      <description>Awesome post!</description>
      <content:encoded><![CDATA[<p>Awesome post!</p>]]></content:encoded>
      <pubDate>Mon, 18 Jul 2011 01:19 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:24184#date:01:19</guid>
    </item>
  
		<item>
      <title>Comment by Jamie Avins</title>
      <description>Nice post Ariya!</description>
      <content:encoded><![CDATA[<p>Nice post Ariya!</p>]]></content:encoded>
      <pubDate>Mon, 18 Jul 2011 00:27 GMT</pubDate>
      <guid isPermaLink="false">http://www.sencha.com/blog//understanding-hardware-acceleration-on-mobile-browsers#id:24183#date:00:27</guid>
    </item>
  
		
	</channel>
</rss>