mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-21 13:54:18 +01:00
[d3d9] Fix pitch when copying straight from mapping buffer
This commit is contained in:
parent
34101dcf26
commit
584e1515b1
@ -4364,12 +4364,12 @@ namespace dxvk {
|
|||||||
+ boxOffsetBlockCount.y * texLevelExtentBlockCount.width
|
+ boxOffsetBlockCount.y * texLevelExtentBlockCount.width
|
||||||
+ boxOffsetBlockCount.x)
|
+ boxOffsetBlockCount.x)
|
||||||
* formatInfo->elementSize;
|
* formatInfo->elementSize;
|
||||||
|
VkDeviceSize pitch = align(texLevelExtentBlockCount.width * formatInfo->elementSize, 4);
|
||||||
|
|
||||||
VkDeviceSize rowAlignment = 0;
|
VkDeviceSize rowAlignment = 0;
|
||||||
DxvkBufferSlice copySrcSlice;
|
DxvkBufferSlice copySrcSlice;
|
||||||
if (pResource->DoesStagingBufferUploads(Subresource)) {
|
if (pResource->DoesStagingBufferUploads(Subresource)) {
|
||||||
VkDeviceSize dirtySize = scaledBoxExtentBlockCount.width * scaledBoxExtentBlockCount.height * scaledBoxExtentBlockCount.depth * formatInfo->elementSize;
|
VkDeviceSize dirtySize = scaledBoxExtentBlockCount.width * scaledBoxExtentBlockCount.height * scaledBoxExtentBlockCount.depth * formatInfo->elementSize;
|
||||||
VkDeviceSize pitch = align(texLevelExtentBlockCount.width * formatInfo->elementSize, 4);
|
|
||||||
D3D9BufferSlice slice = AllocTempBuffer<false>(dirtySize);
|
D3D9BufferSlice slice = AllocTempBuffer<false>(dirtySize);
|
||||||
copySrcSlice = slice.slice;
|
copySrcSlice = slice.slice;
|
||||||
void* srcData = reinterpret_cast<uint8_t*>(srcSlice.mapPtr) + copySrcOffset;
|
void* srcData = reinterpret_cast<uint8_t*>(srcSlice.mapPtr) + copySrcOffset;
|
||||||
@ -4378,7 +4378,7 @@ namespace dxvk {
|
|||||||
pitch, pitch * texLevelExtentBlockCount.height);
|
pitch, pitch * texLevelExtentBlockCount.height);
|
||||||
} else {
|
} else {
|
||||||
copySrcSlice = DxvkBufferSlice(pResource->GetBuffer(Subresource), copySrcOffset, srcSlice.length);
|
copySrcSlice = DxvkBufferSlice(pResource->GetBuffer(Subresource), copySrcOffset, srcSlice.length);
|
||||||
rowAlignment = 4;
|
rowAlignment = pitch; // row alignment can act as the pitch parameter
|
||||||
}
|
}
|
||||||
|
|
||||||
EmitCs([
|
EmitCs([
|
||||||
|
Loading…
x
Reference in New Issue
Block a user