diff options
-rw-r--r-- | src/gpu/vk/GrVkBuffer.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gpu/vk/GrVkBuffer.cpp b/src/gpu/vk/GrVkBuffer.cpp index a93a16e3cc..5aa3fb0c15 100644 --- a/src/gpu/vk/GrVkBuffer.cpp +++ b/src/gpu/vk/GrVkBuffer.cpp @@ -193,7 +193,9 @@ void GrVkBuffer::internalUnmap(GrVkGpu* gpu, size_t size) { VK_CALL(gpu, UnmapMemory(gpu->device(), this->alloc().fMemory)); fMapPtr = nullptr; } else { - if (size <= 65536) { + // vkCmdUpdateBuffer requires size < 64k and 4-byte alignment. + // https://bugs.chromium.org/p/skia/issues/detail?id=7488 + if (size <= 65536 && 0 == (size & 0x3)) { gpu->updateBuffer(this, fMapPtr, this->offset(), size); } else { GrVkTransferBuffer* transferBuffer = |