summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2021-08-07 02:15:24 +0200
committerGravatar Fernando Sahmkow2021-11-16 22:11:29 +0100
commit4b1393a691d1d8d79c57e7b73734cb8287b91760 (patch)
tree46c046c5c1b02378585596bf6ad9370cc81c60de
parentshader: Fix TextureSize check on rescaling. (diff)
downloadyuzu-4b1393a691d1d8d79c57e7b73734cb8287b91760.tar.gz
yuzu-4b1393a691d1d8d79c57e7b73734cb8287b91760.tar.xz
yuzu-4b1393a691d1d8d79c57e7b73734cb8287b91760.zip
Texture Cache: Correctly fix Blits Rescaling.
-rw-r--r--src/video_core/texture_cache/texture_cache.h21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index d86f80b5d..2de439889 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -473,18 +473,21 @@ void TextureCache<P>::BlitImage(const Tegra::Engines::Fermi2D::Surface& dst,
473 PrepareImage(dst_id, true, false); 473 PrepareImage(dst_id, true, false);
474 474
475 Image& dst_image = slot_images[dst_id]; 475 Image& dst_image = slot_images[dst_id];
476 const Image& src_image = slot_images[src_id]; 476 Image& src_image = slot_images[src_id];
477 477
478 const bool is_src_rescaled = True(src_image.flags & ImageFlagBits::Rescaled); 478 bool is_src_rescaled = True(src_image.flags & ImageFlagBits::Rescaled);
479 bool is_dst_rescaled = True(dst_image.flags & ImageFlagBits::Rescaled); 479 bool is_dst_rescaled = True(dst_image.flags & ImageFlagBits::Rescaled);
480 480
481 // TODO: This requires the rendertarget image views to be updated with the upscaled sizes, 481 if (is_src_rescaled != is_dst_rescaled) {
482 // otherwise the blit will use a larger framebuffer size than the image view attachment. 482 if (ImageCanRescale(dst_image)) {
483 // if (is_src_rescaled && !is_dst_rescaled) { 483 ScaleUp(dst_image);
484 // if (ImageCanRescale(dst_image)) { 484 is_dst_rescaled = True(dst_image.flags & ImageFlagBits::Rescaled);
485 // is_dst_rescaled = dst_image.ScaleUp(); 485 }
486 // } 486 if (ImageCanRescale(src_image)) {
487 // } 487 ScaleUp(src_image);
488 is_src_rescaled = True(src_image.flags & ImageFlagBits::Rescaled);
489 }
490 }
488 491
489 const auto& resolution = Settings::values.resolution_info; 492 const auto& resolution = Settings::values.resolution_info;
490 const auto scale_up = [&](u32 value) -> u32 { 493 const auto scale_up = [&](u32 value) -> u32 {