yuzu-emu
/
yuzu-mainline
Archived
1
0
Fork 0

Merge pull request #10675 from liamwhite/scaler

image_info: adjust rescale thresholds and refactor constant use
This commit is contained in:
liamwhite 2023-06-12 21:16:36 -04:00 committed by GitHub
commit e0de6dd63f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 8 deletions

View File

@ -22,6 +22,9 @@ using Tegra::Texture::TICEntry;
using VideoCore::Surface::PixelFormat;
using VideoCore::Surface::SurfaceType;
constexpr u32 RescaleHeightThreshold = 288;
constexpr u32 DownscaleHeightThreshold = 512;
ImageInfo::ImageInfo(const TICEntry& config) noexcept {
forced_flushed = config.IsPitchLinear() && !Settings::values.use_reactive_flushing.GetValue();
dma_downloaded = forced_flushed;
@ -113,8 +116,9 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept {
layer_stride = CalculateLayerStride(*this);
maybe_unaligned_layer_stride = CalculateLayerSize(*this);
rescaleable &= (block.depth == 0) && resources.levels == 1;
rescaleable &= size.height > 256 || GetFormatType(format) != SurfaceType::ColorTexture;
downscaleable = size.height > 512;
rescaleable &= size.height > RescaleHeightThreshold ||
GetFormatType(format) != SurfaceType::ColorTexture;
downscaleable = size.height > DownscaleHeightThreshold;
}
}
@ -152,8 +156,8 @@ ImageInfo::ImageInfo(const Maxwell3D::Regs::RenderTargetConfig& ct,
size.depth = ct.depth;
} else {
rescaleable = block.depth == 0;
rescaleable &= size.height > 256;
downscaleable = size.height > 512;
rescaleable &= size.height > RescaleHeightThreshold;
downscaleable = size.height > DownscaleHeightThreshold;
type = ImageType::e2D;
resources.layers = ct.depth;
}
@ -232,8 +236,8 @@ ImageInfo::ImageInfo(const Fermi2D::Surface& config) noexcept {
.height = config.height,
.depth = 1,
};
rescaleable = block.depth == 0 && size.height > 256;
downscaleable = size.height > 512;
rescaleable = block.depth == 0 && size.height > RescaleHeightThreshold;
downscaleable = size.height > DownscaleHeightThreshold;
}
}
@ -275,8 +279,8 @@ ImageInfo::ImageInfo(const Tegra::DMA::ImageOperand& config) noexcept {
resources.layers = 1;
layer_stride = CalculateLayerStride(*this);
maybe_unaligned_layer_stride = CalculateLayerSize(*this);
rescaleable = block.depth == 0 && size.height > 256;
downscaleable = size.height > 512;
rescaleable = block.depth == 0 && size.height > RescaleHeightThreshold;
downscaleable = size.height > DownscaleHeightThreshold;
}
} // namespace VideoCommon