Flash Player 11.4/AIR 3.4I am super happy to announce that we just posted today Flash Player 11.4/AIR 3.4 beta builds, and you guys need to check what we have for you!

ActionScript Workers

We are bringing concurrency to ActionScript developers through ActionScript Workers (Flash Player and AIR desktop only for now).I posted some details about it 2 weeks ago. You can now test this yourself and enjoy the power of multithreading in Flash Player. We believe this will be a big thing for ActionScript developers. Stage3D was huge, but ActionScript Workers do talk to everyone, not only game developers but all ActionScript developers.

We bundled some very simple demos here (mirror) so that you can check the samples and get started. I will try to post more demos in the next days to provide some cool use cases where ActionScript Workers can be super useful. Find here the full source code for the runtime WAV to MP3 encoding demo I sneaked a month ago. It relies on an embedded worker (separate SWF) which is a different approach to leverage workers, more optimized memory wise cause it does not duplicate the primordial worker.

Looking forward to what you guys will be doing with them!
One last thing, to get full support for workers from Flash Builder (for debugging) you will need a preview of the next version of Flash Builder coming publicly in August.

Increased GPU reach (Stage3D constrained mode)

But we are not stopping there. We know that you guys care about reach, and when you are using Stage3D, you want to make sure the largest number of people can see your content HW accelerated. With this release, we first relaxed the drivers gating to 2006, but also focused specifically on getting Stage3D to work on very popular chipsets that we previously blacklisted (specifically the Intel GMA) which should give you a huge boost in terms of GPU reach. To benefit from that, just use the new Stage3D mode, called "constrained mode".

So what we have done is adding a new parameter to Context3D has been introduced called "profile". This parameter is supplied to the Stage3D.requestContext3D() function and you can give it one of two value Context3DProfile.BASELINE ("baseline") which will return the typical Context3D that has existed in previous releases, or Context3DProfile.BASELINE_CONSTRAINED ("baselineConstrained") which will return a new kind of Context3D capable of running with hardware acceleration on previously unsupported GPU's.

Constrained profile enables content authors to create Stage3D content targeting older systems using graphics cards such as Intel GMA 900/950 on Windows. The trade-off for targeting lower end hardware with Constrained profile is that the Stage3D capabilities will be limited in order to guarantee that content runs well with that hardware. Cards such as the GMA 900/950 only support pixel/vertex shader version 2.0 which forces the following limits on Stage3D when in Constrained profile:

  • Limited to 64 ALU and 32 texture instructions per shader.
  • Only 4 texture read indirections per shader.
  • Limited to a smaller amount of constants/varying/temps per shader.
  • No support for predicate register.
  • This affects sln/sge/seq/sne and needs to be replaced with compound mov/cmp instructions which are available with ps_2_0 (this will be done under the hood at the cost of using more instruction slots compared to ps_2_x).
  • The Context3D back buffer must always be within the bounds of the stage.
  • Only one instance of a Context3D running in Constrained profile is allowed within a Flash Player instance.
  • As with mobile the classic Flash Display List elements will not be updated while constrained Stage3D content is visible unless Context3D.present() is called.

'Profile' is the second optional parameter of the requestContext3D method. Developers can request profile "baselineConstained" to get a Context3D in constrained mode, as the api below shows:

function requestContext3D ( context3DRenderMode : String = "auto", profile : String = "baseline" ) : void;


stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, createdHandler);
stage.stage3Ds[0].requestContext3D(Context3DRenderMode.AUTO, Context3DProfile.BASELINE_CONSTRAINED);

So what about the frameworks that you may be using already?

Stage3D frameworks and constrained mode

Starling is already today constrained mode ready. Check the latest version on github, without any code changes, you will now run HW accelerated on more hardware. We have been working with Away3D, Flare3D, Minko and Alternativa3D which should be constrained mode ready very soon.

Compressed texture with alpha support

You can now leverage transparency for compressed textures when using ATF textures with Stage3D. You may say, great but how do I create ATF textures? The ATF tools will be posted in the next days on Adobe Labs, stay tuned!


You guys remember the post I did a little while ago entitled Flash Player 11.2/AIR 3.2 beta hidden gems? I mentioned at that time camera support for StageVideo, here it comes!


Same as above, those two APIs are going to make all the image processing fellas very happy. Directly grab the pixels from the camera stream, without having to draw it with BitmapData, way more optimized.

LZMA runtime compression/decompression on ByteArray

Leverage the power of runtime LZMA compression and decompression when using the ByteArray class. Claus, enjoy.

AIR iOS Push Notifications

No need to rely on native extensions to leverage push notifications. Adobe AIR now supports it natively.

AIR direct deployment (without iTunes)

Tired of using iTunes or the iPhone configuration utility? The adt tool now directly deploys the application to your iOS device without requiring any other dependency. Simpler, faster, better.

I hope you guys like those improvements. Expect some tooling updates to support those features like ActionScript workers debugging or AIR direct deployment. Some other features like iOS profiler or USB debugging introduced in AIR 3.3 will also be supported through the same tooling updates.

Have fun!