@@ -506,8 +506,8 @@ bool ImageRegionIterator::advanceAndCopyToStagingBuffer(asset::IImage::SBufferCo
506506 const auto imageOffsetInBlocks = dstImageTexelBlockInfo.convertTexelsToBlocks (core::vector3du32_SIMD (mainRegion.imageOffset .x , mainRegion.imageOffset .y , mainRegion.imageOffset .z ));
507507 const auto imageExtentInBlocks = dstImageTexelBlockInfo.convertTexelsToBlocks (core::vector3du32_SIMD (mainRegion.imageExtent .width , mainRegion.imageExtent .height , mainRegion.imageExtent .depth ));
508508
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 );
511511
512512 // region <-> region.imageSubresource.layerCount <-> imageExtentInBlocks.z <-> imageExtentInBlocks.y <-> imageExtentInBlocks.x
513513 auto updateCurrentOffsets = [&]() -> void
@@ -601,8 +601,8 @@ bool ImageRegionIterator::advanceAndCopyToStagingBuffer(asset::IImage::SBufferCo
601601 uint32_t layersToUploadMemorySize = eachLayerNeededMemory * uploadableArrayLayers;
602602
603603 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 ;
606606 regionToCopyNext.imageSubresource .aspectMask = mainRegion.imageSubresource .aspectMask ;
607607 regionToCopyNext.imageSubresource .mipLevel = mainRegion.imageSubresource .mipLevel ;
608608 regionToCopyNext.imageSubresource .baseArrayLayer = mainRegion.imageSubresource .baseArrayLayer + currentLayerInRegion;
@@ -640,8 +640,8 @@ bool ImageRegionIterator::advanceAndCopyToStagingBuffer(asset::IImage::SBufferCo
640640 uint32_t slicesToUploadMemorySize = eachSliceNeededMemory * uploadableSlices;
641641
642642 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 ;
645645 regionToCopyNext.imageSubresource .aspectMask = mainRegion.imageSubresource .aspectMask ;
646646 regionToCopyNext.imageSubresource .mipLevel = mainRegion.imageSubresource .mipLevel ;
647647 regionToCopyNext.imageSubresource .baseArrayLayer = mainRegion.imageSubresource .baseArrayLayer + currentLayerInRegion;
@@ -679,8 +679,8 @@ bool ImageRegionIterator::advanceAndCopyToStagingBuffer(asset::IImage::SBufferCo
679679 uint32_t rowsToUploadMemorySize = eachRowNeededMemory * uploadableRows;
680680
681681 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 ;
684684 regionToCopyNext.imageSubresource .aspectMask = mainRegion.imageSubresource .aspectMask ;
685685 regionToCopyNext.imageSubresource .mipLevel = mainRegion.imageSubresource .mipLevel ;
686686 regionToCopyNext.imageSubresource .baseArrayLayer = mainRegion.imageSubresource .baseArrayLayer + currentLayerInRegion;
@@ -719,8 +719,8 @@ bool ImageRegionIterator::advanceAndCopyToStagingBuffer(asset::IImage::SBufferCo
719719 uint32_t blocksToUploadMemorySize = eachBlockNeededMemory * uploadableBlocks;
720720
721721 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 ;
724724 regionToCopyNext.imageSubresource .aspectMask = mainRegion.imageSubresource .aspectMask ;
725725 regionToCopyNext.imageSubresource .mipLevel = mainRegion.imageSubresource .mipLevel ;
726726 regionToCopyNext.imageSubresource .baseArrayLayer = mainRegion.imageSubresource .baseArrayLayer + currentLayerInRegion;
0 commit comments