summaryrefslogtreecommitdiffstats
path: root/src/video_core/texture_cache/util.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-06-16 20:29:10 +0200
committerGitHub <noreply@github.com>2021-06-16 20:29:10 +0200
commit973bf306edda84e730d56dd73a04c7bbd20d9397 (patch)
tree4d64ac6f6de8e7a2eeeeeba9bd850b7924e46a6b /src/video_core/texture_cache/util.cpp
parentMerge pull request #6460 from Morph1984/fs-access-log-fix (diff)
parentastc_decoder: Fix LDR CEM1 endpoint calculation (diff)
downloadyuzu-973bf306edda84e730d56dd73a04c7bbd20d9397.tar
yuzu-973bf306edda84e730d56dd73a04c7bbd20d9397.tar.gz
yuzu-973bf306edda84e730d56dd73a04c7bbd20d9397.tar.bz2
yuzu-973bf306edda84e730d56dd73a04c7bbd20d9397.tar.lz
yuzu-973bf306edda84e730d56dd73a04c7bbd20d9397.tar.xz
yuzu-973bf306edda84e730d56dd73a04c7bbd20d9397.tar.zst
yuzu-973bf306edda84e730d56dd73a04c7bbd20d9397.zip
Diffstat (limited to 'src/video_core/texture_cache/util.cpp')
-rw-r--r--src/video_core/texture_cache/util.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/video_core/texture_cache/util.cpp b/src/video_core/texture_cache/util.cpp
index 906604a39..0d3e0804f 100644
--- a/src/video_core/texture_cache/util.cpp
+++ b/src/video_core/texture_cache/util.cpp
@@ -47,6 +47,7 @@
#include "video_core/texture_cache/formatter.h"
#include "video_core/texture_cache/samples_helper.h"
#include "video_core/texture_cache/util.h"
+#include "video_core/textures/astc.h"
#include "video_core/textures/decoders.h"
namespace VideoCommon {
@@ -884,8 +885,16 @@ void ConvertImage(std::span<const u8> input, const ImageInfo& info, std::span<u8
ASSERT(copy.image_extent == mip_size);
ASSERT(copy.buffer_row_length == Common::AlignUp(mip_size.width, tile_size.width));
ASSERT(copy.buffer_image_height == Common::AlignUp(mip_size.height, tile_size.height));
- DecompressBC4(input.subspan(copy.buffer_offset), copy.image_extent,
- output.subspan(output_offset));
+ if (IsPixelFormatASTC(info.format)) {
+ ASSERT(copy.image_extent.depth == 1);
+ Tegra::Texture::ASTC::Decompress(input.subspan(copy.buffer_offset),
+ copy.image_extent.width, copy.image_extent.height,
+ copy.image_subresource.num_layers, tile_size.width,
+ tile_size.height, output.subspan(output_offset));
+ } else {
+ DecompressBC4(input.subspan(copy.buffer_offset), copy.image_extent,
+ output.subspan(output_offset));
+ }
copy.buffer_offset = output_offset;
copy.buffer_row_length = mip_size.width;
copy.buffer_image_height = mip_size.height;