diff options
| author | 2021-08-07 02:15:24 +0200 | |
|---|---|---|
| committer | 2021-11-16 22:11:29 +0100 | |
| commit | 4b1393a691d1d8d79c57e7b73734cb8287b91760 (patch) | |
| tree | 46c046c5c1b02378585596bf6ad9370cc81c60de | |
| parent | shader: Fix TextureSize check on rescaling. (diff) | |
| download | yuzu-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.h | 21 |
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 { |