Quote Originally Posted by VENGEANCE MX
Is this a structure that you have to use for the GPU to handle it quickly, or would it be possible to accelerate Flash's primitive one?
That is the real issue. Here is a simplified rundown of how the GPU works:

You set the current states (This will essentially consist of what texture you want to draw among other properties such as alpha blending). This is essentially the slowest (As in really, really slow) common operation you can do on the GPU.

You perform a Draw call which will draw hundreds-thousands of triangles all with the same state.

You repeat the steps for each different texture you have.

This works fine for 3D models where thousands of triangles may share the same texture (And perhaps 30-50 textures total in a complex scene), but in flash you could have a hundred or so textures split up over only 200 objects which will completely drown the card in state changes without really doing anything. As well, you need to group objects by their renderStates so you are not switching back and forth between two renderStates (AKA you want to render AAABBB not ABABAB). This would require a traversal and sorting of the DisplayList. (That is why things like the SceneGraph are used, if stages are nodes then no sorting is necessary)

Basically, GPU acceleration is designed to pump hundreds of thousands of the exact same thing to the screen (Which is why it is massively parallel). This is rarely the case in flash (Although it does happen sometimes).