From 584e1515b1d158167c2f25780de831f01fe16230 Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Sat, 17 Jul 2021 14:50:45 +0200 Subject: [PATCH] [d3d9] Fix pitch when copying straight from mapping buffer --- src/d3d9/d3d9_device.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index ab454d557..a3e9d6b25 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -4364,12 +4364,12 @@ namespace dxvk { + boxOffsetBlockCount.y * texLevelExtentBlockCount.width + boxOffsetBlockCount.x) * formatInfo->elementSize; + VkDeviceSize pitch = align(texLevelExtentBlockCount.width * formatInfo->elementSize, 4); VkDeviceSize rowAlignment = 0; DxvkBufferSlice copySrcSlice; if (pResource->DoesStagingBufferUploads(Subresource)) { VkDeviceSize dirtySize = scaledBoxExtentBlockCount.width * scaledBoxExtentBlockCount.height * scaledBoxExtentBlockCount.depth * formatInfo->elementSize; - VkDeviceSize pitch = align(texLevelExtentBlockCount.width * formatInfo->elementSize, 4); D3D9BufferSlice slice = AllocTempBuffer(dirtySize); copySrcSlice = slice.slice; void* srcData = reinterpret_cast(srcSlice.mapPtr) + copySrcOffset; @@ -4378,7 +4378,7 @@ namespace dxvk { pitch, pitch * texLevelExtentBlockCount.height); } else { copySrcSlice = DxvkBufferSlice(pResource->GetBuffer(Subresource), copySrcOffset, srcSlice.length); - rowAlignment = 4; + rowAlignment = pitch; // row alignment can act as the pitch parameter } EmitCs([