texture_cache: Adjust image view sizes by MSAA samples
This commit is contained in:
parent
e54d08fc1f
commit
c2fb7b64ce
2 changed files with 48 additions and 0 deletions
|
@ -100,6 +100,10 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept {
|
||||||
ASSERT_MSG(false, "Invalid texture_type={}", static_cast<int>(config.texture_type.Value()));
|
ASSERT_MSG(false, "Invalid texture_type={}", static_cast<int>(config.texture_type.Value()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (num_samples > 1) {
|
||||||
|
size.width *= NumSamplesX(config.msaa_mode);
|
||||||
|
size.height *= NumSamplesY(config.msaa_mode);
|
||||||
|
}
|
||||||
if (type != ImageType::Linear) {
|
if (type != ImageType::Linear) {
|
||||||
// FIXME: Call this without passing *this
|
// FIXME: Call this without passing *this
|
||||||
layer_stride = CalculateLayerStride(*this);
|
layer_stride = CalculateLayerStride(*this);
|
||||||
|
|
|
@ -51,4 +51,48 @@ namespace VideoCommon {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] inline int NumSamplesX(Tegra::Texture::MsaaMode msaa_mode) {
|
||||||
|
using Tegra::Texture::MsaaMode;
|
||||||
|
switch (msaa_mode) {
|
||||||
|
case MsaaMode::Msaa1x1:
|
||||||
|
return 1;
|
||||||
|
case MsaaMode::Msaa2x1:
|
||||||
|
case MsaaMode::Msaa2x1_D3D:
|
||||||
|
case MsaaMode::Msaa2x2:
|
||||||
|
case MsaaMode::Msaa2x2_VC4:
|
||||||
|
case MsaaMode::Msaa2x2_VC12:
|
||||||
|
return 2;
|
||||||
|
case MsaaMode::Msaa4x2:
|
||||||
|
case MsaaMode::Msaa4x2_D3D:
|
||||||
|
case MsaaMode::Msaa4x2_VC8:
|
||||||
|
case MsaaMode::Msaa4x2_VC24:
|
||||||
|
case MsaaMode::Msaa4x4:
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
ASSERT_MSG(false, "Invalid MSAA mode={}", static_cast<int>(msaa_mode));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] inline int NumSamplesY(Tegra::Texture::MsaaMode msaa_mode) {
|
||||||
|
using Tegra::Texture::MsaaMode;
|
||||||
|
switch (msaa_mode) {
|
||||||
|
case MsaaMode::Msaa1x1:
|
||||||
|
case MsaaMode::Msaa2x1:
|
||||||
|
case MsaaMode::Msaa2x1_D3D:
|
||||||
|
return 1;
|
||||||
|
case MsaaMode::Msaa2x2:
|
||||||
|
case MsaaMode::Msaa2x2_VC4:
|
||||||
|
case MsaaMode::Msaa2x2_VC12:
|
||||||
|
case MsaaMode::Msaa4x2:
|
||||||
|
case MsaaMode::Msaa4x2_D3D:
|
||||||
|
case MsaaMode::Msaa4x2_VC8:
|
||||||
|
case MsaaMode::Msaa4x2_VC24:
|
||||||
|
return 2;
|
||||||
|
case MsaaMode::Msaa4x4:
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
ASSERT_MSG(false, "Invalid MSAA mode={}", static_cast<int>(msaa_mode));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace VideoCommon
|
} // namespace VideoCommon
|
||||||
|
|
Loading…
Reference in a new issue