diff --git a/src/PasVulkan.Framework.pas b/src/PasVulkan.Framework.pas index 88ae3ee16..73a862ab1 100644 --- a/src/PasVulkan.Framework.pas +++ b/src/PasVulkan.Framework.pas @@ -16966,9 +16966,14 @@ function TpvVulkanDeviceMemoryStaging.Download(const aTransferQueue:TpvVulkanQue Source:Pointer; Destination:PpvUInt8; VkBufferCopy:TVkBufferCopy; + EnableMemoryMap:boolean; begin + { Using Move for memory-mapped buffer causes hands at AMD. } + EnableMemoryMap:=Device.PhysicalDevice.Properties.vendorID<> + TpvUInt32(TpvVulkanVendorID.AMD); - if (TpvVulkanBufferFlag.PersistentMapped in aSourceBuffer.fBufferFlags) and + if EnableMemoryMap and + (TpvVulkanBufferFlag.PersistentMapped in aSourceBuffer.fBufferFlags) and ((aSourceBuffer.fMemoryPropertyFlags and TVkMemoryPropertyFlags(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT))<>0) then begin Source:=aSourceBuffer.Memory.MapMemory;