From abd07e41582b6d8f7efdedb936cdd7a7fddf9912 Mon Sep 17 00:00:00 2001
From: ameerj <52414509+ameerj@users.noreply.github.com>
Date: Tue, 12 Oct 2021 00:35:01 -0400
Subject: video_core: Refactor resolution scale function
---
src/video_core/texture_cache/texture_cache.h | 39 +++++++++-------------------
1 file changed, 12 insertions(+), 27 deletions(-)
(limited to 'src/video_core/texture_cache')
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index 38895c2e9..c77332b46 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -504,17 +504,11 @@ void TextureCache
::BlitImage(const Tegra::Engines::Fermi2D::Surface& dst,
is_dst_rescaled = True(dst_image.flags & ImageFlagBits::Rescaled);
}
const auto& resolution = Settings::values.resolution_info;
- const auto scale_up = [&](u32 value) -> u32 {
- if (value == 0) {
- return 0U;
- }
- return std::max((value * resolution.up_scale) >> resolution.down_shift, 1U);
- };
const auto scale_region = [&](Region2D& region) {
- region.start.x = scale_up(region.start.x);
- region.start.y = scale_up(region.start.y);
- region.end.x = scale_up(region.end.x);
- region.end.y = scale_up(region.end.y);
+ region.start.x = resolution.ScaleUp(region.start.x);
+ region.start.y = resolution.ScaleUp(region.start.y);
+ region.end.x = resolution.ScaleUp(region.end.x);
+ region.end.y = resolution.ScaleUp(region.end.y);
};
// TODO: Deduplicate
@@ -1721,20 +1715,14 @@ void TextureCache::CopyImage(ImageId dst_id, ImageId src_id, std::vector u32 {
- if (value == 0) {
- return 0U;
- }
- return std::max((value * resolution.up_scale) >> resolution.down_shift, 1U);
- };
for (auto& copy : copies) {
- copy.src_offset.x = scale_up(copy.src_offset.x);
- copy.dst_offset.x = scale_up(copy.dst_offset.x);
- copy.extent.width = scale_up(copy.extent.width);
+ copy.src_offset.x = resolution.ScaleUp(copy.src_offset.x);
+ copy.dst_offset.x = resolution.ScaleUp(copy.dst_offset.x);
+ copy.extent.width = resolution.ScaleUp(copy.extent.width);
if (both_2d) {
- copy.src_offset.y = scale_up(copy.src_offset.y);
- copy.dst_offset.y = scale_up(copy.dst_offset.y);
- copy.extent.height = scale_up(copy.extent.height);
+ copy.src_offset.y = resolution.ScaleUp(copy.src_offset.y);
+ copy.dst_offset.y = resolution.ScaleUp(copy.dst_offset.y);
+ copy.extent.height = resolution.ScaleUp(copy.extent.height);
}
}
}
@@ -1812,12 +1800,9 @@ std::pair TextureCache::RenderTargetFromImage(
Extent3D extent = MipSize(image.info.size, view_info.range.base.level);
if (is_rescaled) {
const auto& resolution = Settings::values.resolution_info;
- const auto scale_up = [&](u32 value) {
- return std::max((value * resolution.up_scale) >> resolution.down_shift, 1U);
- };
- extent.width = scale_up(extent.width);
+ extent.width = resolution.ScaleUp(extent.width);
if (image.info.type == ImageType::e2D) {
- extent.height = scale_up(extent.height);
+ extent.height = resolution.ScaleUp(extent.height);
}
}
const u32 num_samples = image.info.num_samples;
--
cgit v1.2.3