This is for when we use alpha-blending because we don't have floating-point textures, right?

Aren't these allocations going to kill performance?  I thought we discussed using scratch variables here?  I think we could do it in O(n) memory instead of the navie nlog(n) memory (where n is the max length we have ever sorted with) by reusing the same buffer (using offsets) at each recursive depth.