First, JSR184 was out there all by itself, carrying the Mali mantra to the masses – bringing smart feature phones fancy graphics capabilities formerly found only on immobile devices like computers and gaming consoles. Now, ARM has fleshed out the Mali software/middleware family with JSR226, JSR287, and SVG-t. What does this alphabet soup of standards designations mean?
For starters, let’s remember that ARM is an IP company. Their business is based on licensing processor IP (and all of the goodies that surround processor IP) primarily to mobile handset developers. As handsets get more complex, we end up needing a lot more sophisticated processors, co-processors, peripherals, software to support those peripherals… the list is almost endless, as is the opportunity for a company like ARM. Now that our typical mobile phone user is expecting features like streaming video delivered to the palm of his or her hand, companies like ARM are racing to provide the infrastructure to make that possible.
In addition to their famed general-purpose processor cores, ARM offers specialized graphics processing units (GPUs) that accelerate graphics rendering on mobile devices. Currently, their GPU family includes the Mali55 and Mali200, and the newly announced software is optimized and pre-integrated with those architectures. While these cores can dramatically improve graphics performance, they work only when you send instructions to them, and that requires special treatment on the software side. This week, in Barcelona, ARM took time off, apparently from enjoying the wealth of Dali, Picasso, Miro, and Gaudi masterpieces practically lying around on every street corner, to tell us about that software layer.
The keystone of the launch is Mali-SVG-t, which stands for Scalable Vector Graphics – tiny (cute that the “t” for “tiny” is lower-case, huh?) Mali-SVG-t supports vector graphics – ideal for applications targeted at mobile devices where screen sizes and resolutions are all over the map. Vector graphics scale smoothly to get the best results from whatever resolution each device provides – without requiring the content providers to know and account for all those resolutions in advance.
The goal with a graphics layer is to deliver the maximum performance available from each platform, while insulating content providers from the myriad combinations of displays, hardware, operating systems, and so forth. We want portable, compliant interfaces that support open standards. ARM went with a veritable standards smorgasbord of Java APIs, including SVG-t 1.2, JSR226 and JSR287. Previously, JSR184 was the only offering – oddly bringing mobile 3D out ahead of the standardized Vector/2D stack.
SVG-t is a language defined by the World Wide Web Consortium (W3C) for describing 2D content in XML. You will see SVG-t in mobile handsets rendering things like user interface icons, graphical images in MMS messages, screen savers, idle screens, mobile browsers, and specialized downloadable 3rd-party mobile applications. It allows content developers to create these objects in a fashion that easily scales to different screen sizes. It provides a smaller file size than bitmap images, and it has the capability to support animation. SVG-t also supports audio, video and bitmaps and acts as a container for content distribution. It supports interactivity using built-in scripting, or by linking with a Java application.
The JSR-000226 standard (Those Java Community Process people certainly did want to leave room for future expansion, didn’t they? How long until we’re at JSR-999999 and have to make a new numbering scheme?) is called the “Scalable 2D Vector Graphics API for J2ME” It defines an API for rendering 2D graphics in the same W3C format as above.
Mali-JSR287 is backwards compatible with JSR226, but it adds support for advanced features including embedded multimedia (such as video); advanced graphics effects like transparency, gradient fills, and advanced text rendering; and a low-level API that gives Java applications direct access to advanced features of the underlying GPUs.
The idea behind all this is to ultimately provide support for the complete set of Khronos and Java graphics open standards to mobile handset developers. This frees us up as engineers to concentrate on creating value-added content – quite a bit more fun than spending your day porting platform-specific graphics applications to various hardware environments.
In addition to putting the runtime support for all this graphics content on your phone, ARM wanted to prime the ecosystem pump by giving content providers complementary tools to create compelling content. If the content is out there, of course, the handset folks are more inclined to include support in their handsets. The tool offering includes performance analysis, a shader compiler, texture compression, a shader debugger, an emulator, conditioning tools, “…and more.”
Leading the pack of handset makers that are likely adopters of the new Mali capabilities, Ericsson Mobile Platforms has licensed the new graphics stack to be used in conjunction with the Mali200 GPU hardware in their HSPA-enabled mobile platform, U500. The complete Mali graphics stack is now available for licensing from ARM for use with the Mali55 and Mali200 GPUs or with legacy chipsets without a Mali GPU. The Mali-JSR287 is the only delayed component – it will be released after ratification of the JSR287 standard (expected by the end of 2008, according to ARM).