Browse Source
Merge pull request #9691 from ameerj/msaa-texcache
texture_cache: Fix tracking of MSAA image views
pull/15/merge
bunnei
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
48 additions and
0 deletions
-
src/video_core/texture_cache/image_info.cpp
-
src/video_core/texture_cache/samples_helper.h
|
|
|
@ -100,6 +100,10 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept { |
|
|
|
ASSERT_MSG(false, "Invalid texture_type={}", static_cast<int>(config.texture_type.Value())); |
|
|
|
break; |
|
|
|
} |
|
|
|
if (num_samples > 1) { |
|
|
|
size.width *= NumSamplesX(config.msaa_mode); |
|
|
|
size.height *= NumSamplesY(config.msaa_mode); |
|
|
|
} |
|
|
|
if (type != ImageType::Linear) { |
|
|
|
// FIXME: Call this without passing *this
|
|
|
|
layer_stride = CalculateLayerStride(*this); |
|
|
|
|
|
|
|
@ -51,4 +51,48 @@ namespace VideoCommon { |
|
|
|
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 |