diff --git a/ggml/src/ggml-vulkan/ggml-vulkan.cpp b/ggml/src/ggml-vulkan/ggml-vulkan.cpp index 75132c0b5..738e7cd92 100644 --- a/ggml/src/ggml-vulkan/ggml-vulkan.cpp +++ b/ggml/src/ggml-vulkan/ggml-vulkan.cpp @@ -95,6 +95,14 @@ typedef struct VkPhysicalDeviceCooperativeMatrixDecodeVectorFeaturesNV { #include "ggml-vulkan-shaders.hpp" +// On 32-bit platforms, Vulkan non-dispatchable handles such as VkBuffer are represented as uint64_t, +// and Vulkan-Hpp disables implicit conversions for type safety. +namespace { +inline std::ostream & operator<<(std::ostream & os, vk::Buffer buffer) { + return os << static_cast(buffer); +} +} + // remove this once it's more widely available in the SDK #if !defined(VK_KHR_shader_bfloat16) @@ -8742,7 +8750,7 @@ static bool ggml_vk_buffer_write_2d_async(vk_context subctx, vk_buffer& dst, siz } ggml_vk_sync_buffers(nullptr, subctx); - subctx->s->buffer->buf.copyBuffer((VkBuffer)staging_buffer->buffer, (VkBuffer)dst->buffer, slices); + subctx->s->buffer->buf.copyBuffer(staging_buffer->buffer, dst->buffer, slices); if (width == spitch) { deferred_memcpy((uint8_t *)staging_buffer->ptr, src, staging_size, &subctx->in_memcpys);