diff options
author | bunnei <bunneidev@gmail.com> | 2021-08-31 00:24:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-31 00:24:04 +0200 |
commit | ec19d9594f0849692505091c7d39e035e4de6ce8 (patch) | |
tree | f018e0fb01410345c827318a21225e35ac0861d8 | |
parent | Merge pull request #6905 from Morph1984/nifm-misc (diff) | |
parent | vk_blit_screen: Fix non-accelerated texture size calculation (diff) | |
download | yuzu-ec19d9594f0849692505091c7d39e035e4de6ce8.tar yuzu-ec19d9594f0849692505091c7d39e035e4de6ce8.tar.gz yuzu-ec19d9594f0849692505091c7d39e035e4de6ce8.tar.bz2 yuzu-ec19d9594f0849692505091c7d39e035e4de6ce8.tar.lz yuzu-ec19d9594f0849692505091c7d39e035e4de6ce8.tar.xz yuzu-ec19d9594f0849692505091c7d39e035e4de6ce8.tar.zst yuzu-ec19d9594f0849692505091c7d39e035e4de6ce8.zip |
-rw-r--r-- | src/video_core/renderer_vulkan/vk_blit_screen.cpp | 4 | ||||
-rw-r--r-- | src/video_core/textures/decoders.cpp | 8 |
2 files changed, 3 insertions, 9 deletions
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.cpp b/src/video_core/renderer_vulkan/vk_blit_screen.cpp index 5c43b8acf..cb0580182 100644 --- a/src/video_core/renderer_vulkan/vk_blit_screen.cpp +++ b/src/video_core/renderer_vulkan/vk_blit_screen.cpp @@ -159,11 +159,13 @@ VkSemaphore VKBlitScreen::Draw(const Tegra::FramebufferConfig& framebuffer, const VAddr framebuffer_addr = framebuffer.address + framebuffer.offset; const u8* const host_ptr = cpu_memory.GetPointer(framebuffer_addr); - const size_t size_bytes = GetSizeInBytes(framebuffer); // TODO(Rodrigo): Read this from HLE constexpr u32 block_height_log2 = 4; const u32 bytes_per_pixel = GetBytesPerPixel(framebuffer); + const u64 size_bytes{Tegra::Texture::CalculateSize(true, bytes_per_pixel, + framebuffer.stride, framebuffer.height, + 1, block_height_log2, 0)}; Tegra::Texture::UnswizzleTexture( mapped_span.subspan(image_offset, size_bytes), std::span(host_ptr, size_bytes), bytes_per_pixel, framebuffer.width, framebuffer.height, 1, block_height_log2, 0); diff --git a/src/video_core/textures/decoders.cpp b/src/video_core/textures/decoders.cpp index c010b9353..24e943e4c 100644 --- a/src/video_core/textures/decoders.cpp +++ b/src/video_core/textures/decoders.cpp @@ -63,14 +63,6 @@ void SwizzleImpl(std::span<u8> output, std::span<const u8> input, u32 width, u32 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, break. - ASSERT_MSG(false, "offset {} exceeds input size {}!", offset, input.size()); - break; - } - u8* const dst = &output[TO_LINEAR ? swizzled_offset : unswizzled_offset]; const u8* const src = &input[TO_LINEAR ? unswizzled_offset : swizzled_offset]; |