[mlir][vulkan-runner] Use aligned pointer for host buffer
authorjackalcooper <jackalcooper@gmail.com>
Tue, 23 Aug 2022 00:37:26 +0000 (20:37 -0400)
committerLei Zhang <antiagainst@google.com>
Tue, 23 Aug 2022 00:42:54 +0000 (20:42 -0400)
Fix incorrect pointer usage in Vulkan buffer and Memref descriptor binding:
- Vulkan runtime produced incorrect result if there is alignment.
- There was illegal memory access if binding a LLVM global materialized
  from a constant op (0xdeadbeef).

Reviewed By: antiagainst

Differential Revision: https://reviews.llvm.org/D132291

mlir/tools/mlir-vulkan-runner/vulkan-runtime-wrappers.cpp

index c7ee02c..f1ed571 100644 (file)
@@ -85,7 +85,7 @@ void bindMemRef(void *vkRuntimeManager, DescriptorSetIndex setIndex,
   uint32_t size = sizeof(T);
   for (unsigned i = 0; i < S; i++)
     size *= ptr->sizes[i];
-  VulkanHostMemoryBuffer memBuffer{ptr->allocated, size};
+  VulkanHostMemoryBuffer memBuffer{ptr->aligned, size};
   reinterpret_cast<VulkanRuntimeManager *>(vkRuntimeManager)
       ->setResourceData(setIndex, bindIndex, memBuffer);
 }