From 444e35e34f5d0df553520d035411dd581fa58897 Mon Sep 17 00:00:00 2001 From: TheASVigilante <65920585+TheASVigilante@users.noreply.github.com> Date: Mon, 6 Mar 2023 20:19:34 +0100 Subject: [PATCH] Fix swizzling regression + minor optimizations to swizzling --- app/src/main/cpp/skyline/gpu/texture/layout.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/app/src/main/cpp/skyline/gpu/texture/layout.cpp b/app/src/main/cpp/skyline/gpu/texture/layout.cpp index efb178f5..c551a4e0 100644 --- a/app/src/main/cpp/skyline/gpu/texture/layout.cpp +++ b/app/src/main/cpp/skyline/gpu/texture/layout.cpp @@ -177,17 +177,14 @@ namespace skyline::gpu::texture { if (hasPaddingBlock) deswizzleBlock(pitchRob, [&](u8 *linearSector, size_t xT) __attribute__((always_inline)) { - #pragma clang loop unroll_count(4) - for (size_t pixelOffset{}; pixelOffset < SectorWidth; pixelOffset += formatBpb) { - if (xT < blockPaddingOffset) { - if constexpr (BlockLinearToPitch) - std::memcpy(linearSector + pixelOffset, sector, formatBpb); - else - std::memcpy(sector, linearSector + pixelOffset, formatBpb); - } - xT += formatBpb; - } + if (xT < blockPaddingOffset) { + size_t copyAmount{std::min(blockPaddingOffset - xT, SectorWidth)}; + if constexpr (BlockLinearToPitch) + std::memcpy(linearSector, sector, copyAmount); + else + std::memcpy(sector, linearSector, copyAmount); + } sector += SectorWidth; }); }};