You don't have acceleration because some parts of your stack are too old. Direct Rendering is unimportant in this context.
I do not remember which versions exactly brought HD5xxx support, but I'm pretty sure that upgrading all these to the most recent version you can get will give you working 3d acceleration. In October 2010, it was NOT widely available in distributions.
I don't have experience with Ubuntu, but I'm sure that somebody else here can tell you exactly how to do this. Otherwise, ask on an Ubuntu forum how to add the latest drivers from xorg-edgers.
It seems the parameter space size in the command table header is broken.
Indeed it seems that some command tables (root or not) do have an empty parameter space (zero sized), but do use opcodes accessing the parameter space. Then, dynamically allocating that space from the size field from the command header won't work.
The current atombios interpreter does allocate statically the parameter space from structures in atombios.h. Then when the interpreter calls a sub command table, it uses the statically allocated space at the root level. A kind of pre-allocated stack.
What is the proper way to allocate the parameter space?