summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlat9nq <22451773+lat9nq@users.noreply.github.com>2021-06-04 09:35:13 +0200
committerlat9nq <22451773+lat9nq@users.noreply.github.com>2021-06-04 11:03:54 +0200
commit1feefabeba24fa249c8fc3d320a9becdd4f9bced (patch)
tree79b1149a701a65490e3e040610762e1db20dfedb
parentMerge pull request #6389 from german77/Analog_button_fix (diff)
downloadyuzu-1feefabeba24fa249c8fc3d320a9becdd4f9bced.tar
yuzu-1feefabeba24fa249c8fc3d320a9becdd4f9bced.tar.gz
yuzu-1feefabeba24fa249c8fc3d320a9becdd4f9bced.tar.bz2
yuzu-1feefabeba24fa249c8fc3d320a9becdd4f9bced.tar.lz
yuzu-1feefabeba24fa249c8fc3d320a9becdd4f9bced.tar.xz
yuzu-1feefabeba24fa249c8fc3d320a9becdd4f9bced.tar.zst
yuzu-1feefabeba24fa249c8fc3d320a9becdd4f9bced.zip
-rw-r--r--src/video_core/textures/decoders.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/video_core/textures/decoders.cpp b/src/video_core/textures/decoders.cpp
index 3a463d5db..1bccc09d9 100644
--- a/src/video_core/textures/decoders.cpp
+++ b/src/video_core/textures/decoders.cpp
@@ -63,6 +63,14 @@ void Swizzle(std::span<u8> output, std::span<const u8> input, u32 bytes_per_pixe
const u32 unswizzled_offset =
slice * pitch * height + line * pitch + column * bytes_per_pixel;
+ if (const auto offset = (TO_LINEAR ? unswizzled_offset : swizzled_offset);
+ offset >= input.size()) {
+ // TODO(Rodrigo): This is an out of bounds access that should never happen. To
+ // avoid crashing the emulator, continue.
+ ASSERT_MSG(false, "offset {} exceeds input size {}!", offset, input.size());
+ continue;
+ }
+
u8* const dst = &output[TO_LINEAR ? swizzled_offset : unswizzled_offset];
const u8* const src = &input[TO_LINEAR ? unswizzled_offset : swizzled_offset];
std::memcpy(dst, src, bytes_per_pixel);