diff options
| -rw-r--r-- | src/video_core/texture_cache/image_info.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/texture_cache/samples_helper.h | 44 |
2 files changed, 48 insertions, 0 deletions
diff --git a/src/video_core/texture_cache/image_info.cpp b/src/video_core/texture_cache/image_info.cpp index 852ec2519..e9100091e 100644 --- a/src/video_core/texture_cache/image_info.cpp +++ b/src/video_core/texture_cache/image_info.cpp | |||
| @@ -100,6 +100,10 @@ ImageInfo::ImageInfo(const TICEntry& config) noexcept { | |||
| 100 | ASSERT_MSG(false, "Invalid texture_type={}", static_cast<int>(config.texture_type.Value())); | 100 | ASSERT_MSG(false, "Invalid texture_type={}", static_cast<int>(config.texture_type.Value())); |
| 101 | break; | 101 | break; |
| 102 | } | 102 | } |
| 103 | if (num_samples > 1) { | ||
| 104 | size.width *= NumSamplesX(config.msaa_mode); | ||
| 105 | size.height *= NumSamplesY(config.msaa_mode); | ||
| 106 | } | ||
| 103 | if (type != ImageType::Linear) { | 107 | if (type != ImageType::Linear) { |
| 104 | // FIXME: Call this without passing *this | 108 | // FIXME: Call this without passing *this |
| 105 | layer_stride = CalculateLayerStride(*this); | 109 | layer_stride = CalculateLayerStride(*this); |
diff --git a/src/video_core/texture_cache/samples_helper.h b/src/video_core/texture_cache/samples_helper.h index d552bccf0..203ac1b11 100644 --- a/src/video_core/texture_cache/samples_helper.h +++ b/src/video_core/texture_cache/samples_helper.h | |||
| @@ -51,4 +51,48 @@ namespace VideoCommon { | |||
| 51 | return 1; | 51 | return 1; |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | [[nodiscard]] inline int NumSamplesX(Tegra::Texture::MsaaMode msaa_mode) { | ||
| 55 | using Tegra::Texture::MsaaMode; | ||
| 56 | switch (msaa_mode) { | ||
| 57 | case MsaaMode::Msaa1x1: | ||
| 58 | return 1; | ||
| 59 | case MsaaMode::Msaa2x1: | ||
| 60 | case MsaaMode::Msaa2x1_D3D: | ||
| 61 | case MsaaMode::Msaa2x2: | ||
| 62 | case MsaaMode::Msaa2x2_VC4: | ||
| 63 | case MsaaMode::Msaa2x2_VC12: | ||
| 64 | return 2; | ||
| 65 | case MsaaMode::Msaa4x2: | ||
| 66 | case MsaaMode::Msaa4x2_D3D: | ||
| 67 | case MsaaMode::Msaa4x2_VC8: | ||
| 68 | case MsaaMode::Msaa4x2_VC24: | ||
| 69 | case MsaaMode::Msaa4x4: | ||
| 70 | return 4; | ||
| 71 | } | ||
| 72 | ASSERT_MSG(false, "Invalid MSAA mode={}", static_cast<int>(msaa_mode)); | ||
| 73 | return 1; | ||
| 74 | } | ||
| 75 | |||
| 76 | [[nodiscard]] inline int NumSamplesY(Tegra::Texture::MsaaMode msaa_mode) { | ||
| 77 | using Tegra::Texture::MsaaMode; | ||
| 78 | switch (msaa_mode) { | ||
| 79 | case MsaaMode::Msaa1x1: | ||
| 80 | case MsaaMode::Msaa2x1: | ||
| 81 | case MsaaMode::Msaa2x1_D3D: | ||
| 82 | return 1; | ||
| 83 | case MsaaMode::Msaa2x2: | ||
| 84 | case MsaaMode::Msaa2x2_VC4: | ||
| 85 | case MsaaMode::Msaa2x2_VC12: | ||
| 86 | case MsaaMode::Msaa4x2: | ||
| 87 | case MsaaMode::Msaa4x2_D3D: | ||
| 88 | case MsaaMode::Msaa4x2_VC8: | ||
| 89 | case MsaaMode::Msaa4x2_VC24: | ||
| 90 | return 2; | ||
| 91 | case MsaaMode::Msaa4x4: | ||
| 92 | return 4; | ||
| 93 | } | ||
| 94 | ASSERT_MSG(false, "Invalid MSAA mode={}", static_cast<int>(msaa_mode)); | ||
| 95 | return 1; | ||
| 96 | } | ||
| 97 | |||
| 54 | } // namespace VideoCommon | 98 | } // namespace VideoCommon |