Sort register lists by register type first, then register number.
This groups all the registers by type first, which is useful for packing
heterogeneous uniform buffers later.
This groups all the registers by type first, which is useful for packing
heterogeneous uniform buffers later.