First let me say that Flash™ and I are friends, I have built my career on top of Flash (in part) for the last 10 years but we are having issues... Just had to make that clear.

Ok, so there's been a lot of speculation about Adobe bringing Flash to the iPhone / iPod Touch. Besides some basic problems with the idea (like no analogous plug-in architecture for Mobile Safari, have you noticed how Quicktime movies play?). The biggest problem is that Flash is a resource hog. It can't render vector content using available specialised hardware and it doesn't make very efficient use of other resources such as memory.

Adobe (and before them, Macromedia) have been slow to take advantage of modern ways to draw 2d graphics in Flash. Most modern desktop computers and some modern mobile devices have dedicated hardware to speed up the drawing of 2d graphics to screen. Desktop operating systems have Quartz (on Mac), WPF (on Vista) and XGL (on Linux) but Flash still uses the CPU to grunt its way through beziers, points and fills. Newer versions of Flash have tapped hardware to improve video playback by leveraging H.264 decoding in hardware but Adobe has relied on improvements in CPU speed to deliver better 2d drawing on the desktop and now they face a problem... Well, a couple of problems

  1. People are getting used to higher quality 2d graphics and high frame rate animation on the desktop and on games consoles. Flash's CPU bound rendering performance is falling behind.
  2. Browser makers are beginning to integrate native (very high performance) implementations of the commonly used javascript convenience functions that manipulate webpages. That makes competing, web standards based website vector graphics technologies (like SVG) far more attractive to content makers.
  3. Content makers are increasingly using technologies like Processing that can be embedded into web pages and can access hardware to render graphics and produce far higher quality interactive experiences.

I think that it's about time Adobe invested some time in making use of platform specific 2d libraries (Quartz, WPF, XGL) for rendering flash content. Then we may see high performance Flash on devices.

Leave a Reply