Skip to content

Commit 5d1e854

Browse files
committed
Fixed 3D image copy
3D subregions were not properly supported in Image::copyTo() Bug: b/144353295 Change-Id: I445881b37be310401b38cffcb6003a1e4461bed8 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/38471 Presubmit-Ready: Alexis Hétu <sugoi@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Antonio Maiorano <amaiorano@google.com>
1 parent d640759 commit 5d1e854

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/Vulkan/VkImage.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -314,13 +314,15 @@ void Image::copyTo(Image* dstImage, const VkImageCopy& pRegion) const
314314
{
315315
size_t copySize = copyExtent.width * srcBytesPerBlock;
316316

317-
for(uint32_t z = 0; z < copyExtent.depth; z++)
317+
for(uint32_t z = 0; z < copyExtent.depth; z++, dstMem += dstSlicePitchBytes, srcMem += srcSlicePitchBytes)
318318
{
319-
for(uint32_t y = 0; y < copyExtent.height; y++, dstMem += dstRowPitchBytes, srcMem += srcRowPitchBytes)
319+
const uint8_t* srcSlice = srcMem;
320+
uint8_t* dstSlice = dstMem;
321+
for(uint32_t y = 0; y < copyExtent.height; y++, dstSlice += dstRowPitchBytes, srcSlice += srcRowPitchBytes)
320322
{
321-
ASSERT((srcMem + copySize) < end());
322-
ASSERT((dstMem + copySize) < dstImage->end());
323-
memcpy(dstMem, srcMem, copySize);
323+
ASSERT((srcSlice + copySize) < end());
324+
ASSERT((dstSlice + copySize) < dstImage->end());
325+
memcpy(dstSlice, srcSlice, copySize);
324326
}
325327
}
326328
}

0 commit comments

Comments
 (0)