arbitrary many VkBuffer can be defined for the same VkMemory or VkDeviceAddress-range.
(encode/decode)::VulkanDeviceAddressTracker currently assumes a 1:1 relation,
which cannot work correctly when buffer-aliasing is actively used.
the correct relation VkBuffer<->VkDeviceAddress is N:1, the lookup:
VkBuffer GetBufferByDeviceAddress(VkDeviceAddress device_address) const;
needs to be refactored to e.g.:
std::unordered_set<VkBuffer> GetBufferByDeviceAddress(VkDeviceAddress device_address) const;
arbitrary many
VkBuffercan be defined for the sameVkMemoryorVkDeviceAddress-range.(encode/decode)::VulkanDeviceAddressTracker currently assumes a 1:1 relation,
which cannot work correctly when buffer-aliasing is actively used.
the correct relation VkBuffer<->VkDeviceAddress is N:1, the lookup:
VkBuffer GetBufferByDeviceAddress(VkDeviceAddress device_address) const;needs to be refactored to e.g.:
std::unordered_set<VkBuffer> GetBufferByDeviceAddress(VkDeviceAddress device_address) const;