假设我每个设备分配都绑定了一个VkBuffer,并使用适当的vkCmdCopyBuffer组合,逐块执行arena的紧凑操作。
假设arena可能包含任意对齐排列的线性和非线性数据。由于在绑定后,VkImage是不可变的,所以紧凑操作将涉及在已移动图像数据的新位置构建和绑定新的VkImage。
在arena进行紧凑操作时,其中没有任何资源被绑定到任何东西,也不能被视为“正在使用”。
实现这并不困难,但我有一个疑虑:
使用vkCmdCopyBuffer移动图像数据(以避免冗余布局转换),然后在新位置构造新的VkImage,是否存在未定义行为(UB)?
我的想法是,实现可能会做一些奇怪的事情,比如依赖于某些内部簿记结构中的绝对设备地址,这使得直到绑定到新对象之前,将图像数据视为POD就是UB。
假设arena可能包含任意对齐排列的线性和非线性数据。由于在绑定后,VkImage是不可变的,所以紧凑操作将涉及在已移动图像数据的新位置构建和绑定新的VkImage。
在arena进行紧凑操作时,其中没有任何资源被绑定到任何东西,也不能被视为“正在使用”。
实现这并不困难,但我有一个疑虑:
使用vkCmdCopyBuffer移动图像数据(以避免冗余布局转换),然后在新位置构造新的VkImage,是否存在未定义行为(UB)?
我的想法是,实现可能会做一些奇怪的事情,比如依赖于某些内部簿记结构中的绝对设备地址,这使得直到绑定到新对象之前,将图像数据视为POD就是UB。