It looks like even for a buffer with a width 1 ID3D12Device::GetResourseAllocationInfo always returns the size/aligment as 64K. That is not a problem. The issue i am having is that any resource created on that heap needs to respect the aligment. So if put a resource at Offset 0 and try to put another resource at 32k for example. The resource at 0 will work but when i try to put something at 32k, it generates an error that say all resource needs to respect the boundary. So if i have two distinct buffers of let's say 32k each, there is no way i can create two distinct resources with the exact amout of memory i want to use because of that issue. One buffer would need to be at HeapOffset 0 and the other at HeapOffset 64k. Also now i would need to create a Heap with a size of 64k*2 in order to put two 32k buffers in there. Now i just waste 32k on each side. I know i can overcome this by creating one Huge buffer and and just point to the buffer location that i want to draw. But i kind of find it very annoying that the API does not let you insert the data into any location in a Heap.
All in all i know you can write a system that managed the heaps similar to how you would do it in the CPU side if you were to write your own memory management system. That
way that limitation does not seem like it exist.