@@ -506,8 +506,8 @@ bool ImageRegionIterator::advanceAndCopyToStagingBuffer(asset::IImage::SBufferCo
506
506
const auto imageOffsetInBlocks = dstImageTexelBlockInfo.convertTexelsToBlocks (core::vector3du32_SIMD (mainRegion.imageOffset .x , mainRegion.imageOffset .y , mainRegion.imageOffset .z ));
507
507
const auto imageExtentInBlocks = dstImageTexelBlockInfo.convertTexelsToBlocks (core::vector3du32_SIMD (mainRegion.imageExtent .width , mainRegion.imageExtent .height , mainRegion.imageExtent .depth ));
508
508
509
- const auto copyTexelStrides = getOptimalCopyTexelStrides (mainRegion.imageExtent );
510
- const core::vector4du32_SIMD copyByteStrides = dstImageTexelBlockInfo.convert3DTexelStridesTo1DByteStrides (copyTexelStrides );
509
+ const auto copyBlockStrides = dstImageTexelBlockInfo. convertTexelsToBlocks ( getOptimalCopyTexelStrides (mainRegion.imageExtent ) );
510
+ const core::vector4du32_SIMD copyByteStrides = dstImageTexelBlockInfo.convert3DBlockStridesTo1DByteStrides (copyBlockStrides );
511
511
512
512
// region <-> region.imageSubresource.layerCount <-> imageExtentInBlocks.z <-> imageExtentInBlocks.y <-> imageExtentInBlocks.x
513
513
auto updateCurrentOffsets = [&]() -> void
@@ -601,8 +601,8 @@ bool ImageRegionIterator::advanceAndCopyToStagingBuffer(asset::IImage::SBufferCo
601
601
uint32_t layersToUploadMemorySize = eachLayerNeededMemory * uploadableArrayLayers;
602
602
603
603
regionToCopyNext.bufferOffset = stagingBufferOffset;
604
- regionToCopyNext.bufferRowLength = copyTexelStrides .x ;
605
- regionToCopyNext.bufferImageHeight = copyTexelStrides .y ;
604
+ regionToCopyNext.bufferRowLength = copyBlockStrides. x * texelBlockDim .x ;
605
+ regionToCopyNext.bufferImageHeight = copyBlockStrides. y * texelBlockDim .y ;
606
606
regionToCopyNext.imageSubresource .aspectMask = mainRegion.imageSubresource .aspectMask ;
607
607
regionToCopyNext.imageSubresource .mipLevel = mainRegion.imageSubresource .mipLevel ;
608
608
regionToCopyNext.imageSubresource .baseArrayLayer = mainRegion.imageSubresource .baseArrayLayer + currentLayerInRegion;
@@ -640,8 +640,8 @@ bool ImageRegionIterator::advanceAndCopyToStagingBuffer(asset::IImage::SBufferCo
640
640
uint32_t slicesToUploadMemorySize = eachSliceNeededMemory * uploadableSlices;
641
641
642
642
regionToCopyNext.bufferOffset = stagingBufferOffset;
643
- regionToCopyNext.bufferRowLength = copyTexelStrides .x ;
644
- regionToCopyNext.bufferImageHeight = copyTexelStrides .y ;
643
+ regionToCopyNext.bufferRowLength = copyBlockStrides. x * texelBlockDim .x ;
644
+ regionToCopyNext.bufferImageHeight = copyBlockStrides. y * texelBlockDim .y ;
645
645
regionToCopyNext.imageSubresource .aspectMask = mainRegion.imageSubresource .aspectMask ;
646
646
regionToCopyNext.imageSubresource .mipLevel = mainRegion.imageSubresource .mipLevel ;
647
647
regionToCopyNext.imageSubresource .baseArrayLayer = mainRegion.imageSubresource .baseArrayLayer + currentLayerInRegion;
@@ -679,8 +679,8 @@ bool ImageRegionIterator::advanceAndCopyToStagingBuffer(asset::IImage::SBufferCo
679
679
uint32_t rowsToUploadMemorySize = eachRowNeededMemory * uploadableRows;
680
680
681
681
regionToCopyNext.bufferOffset = stagingBufferOffset;
682
- regionToCopyNext.bufferRowLength = copyTexelStrides .x ;
683
- regionToCopyNext.bufferImageHeight = copyTexelStrides .y ;
682
+ regionToCopyNext.bufferRowLength = copyBlockStrides. x * texelBlockDim .x ;
683
+ regionToCopyNext.bufferImageHeight = copyBlockStrides. y * texelBlockDim .y ;
684
684
regionToCopyNext.imageSubresource .aspectMask = mainRegion.imageSubresource .aspectMask ;
685
685
regionToCopyNext.imageSubresource .mipLevel = mainRegion.imageSubresource .mipLevel ;
686
686
regionToCopyNext.imageSubresource .baseArrayLayer = mainRegion.imageSubresource .baseArrayLayer + currentLayerInRegion;
@@ -719,8 +719,8 @@ bool ImageRegionIterator::advanceAndCopyToStagingBuffer(asset::IImage::SBufferCo
719
719
uint32_t blocksToUploadMemorySize = eachBlockNeededMemory * uploadableBlocks;
720
720
721
721
regionToCopyNext.bufferOffset = stagingBufferOffset;
722
- regionToCopyNext.bufferRowLength = copyTexelStrides .x ;
723
- regionToCopyNext.bufferImageHeight = copyTexelStrides .y ;
722
+ regionToCopyNext.bufferRowLength = copyBlockStrides. x * texelBlockDim .x ;
723
+ regionToCopyNext.bufferImageHeight = copyBlockStrides. y * texelBlockDim .y ;
724
724
regionToCopyNext.imageSubresource .aspectMask = mainRegion.imageSubresource .aspectMask ;
725
725
regionToCopyNext.imageSubresource .mipLevel = mainRegion.imageSubresource .mipLevel ;
726
726
regionToCopyNext.imageSubresource .baseArrayLayer = mainRegion.imageSubresource .baseArrayLayer + currentLayerInRegion;
0 commit comments