Просмотр исходного кода

video_core/textures: Move GetMaxAnisotropy to cpp file

ReinUsesLisp 6 лет назад
Родитель
Сommit
a209d464f9
2 измененных файлов с 23 добавлено и 19 удалено
  1. 22 0
      src/video_core/textures/texture.cpp
  2. 1 19
      src/video_core/textures/texture.h

+ 22 - 0
src/video_core/textures/texture.cpp

@@ -2,8 +2,10 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
+#include <algorithm>
 #include <array>
 
+#include "core/settings.h"
 #include "video_core/textures/texture.h"
 
 namespace Tegra::Texture {
@@ -45,6 +47,22 @@ constexpr std::array<float, 256> SRGB_CONVERSION_LUT = {
     0.917104f, 0.929242f, 0.941493f, 0.953859f, 0.966338f, 1.000000f, 1.000000f, 1.000000f,
 };
 
+unsigned SettingsMinimumAnisotropy() noexcept {
+    switch (static_cast<Anisotropy>(Settings::values.max_anisotropy)) {
+    default:
+    case Anisotropy::Default:
+        return 1U;
+    case Anisotropy::Filter2x:
+        return 2U;
+    case Anisotropy::Filter4x:
+        return 4U;
+    case Anisotropy::Filter8x:
+        return 8U;
+    case Anisotropy::Filter16x:
+        return 16U;
+    }
+}
+
 } // Anonymous namespace
 
 std::array<float, 4> TSCEntry::GetBorderColor() const noexcept {
@@ -55,4 +73,8 @@ std::array<float, 4> TSCEntry::GetBorderColor() const noexcept {
             SRGB_CONVERSION_LUT[srgb_border_color_b], border_color[3]};
 }
 
+float TSCEntry::GetMaxAnisotropy() const noexcept {
+    return static_cast<float>(std::max(1U << max_anisotropy, SettingsMinimumAnisotropy()));
+}
+
 } // namespace Tegra::Texture

+ 1 - 19
src/video_core/textures/texture.h

@@ -8,7 +8,6 @@
 #include "common/assert.h"
 #include "common/bit_field.h"
 #include "common/common_types.h"
-#include "core/settings.h"
 
 namespace Tegra::Texture {
 
@@ -338,24 +337,7 @@ struct TSCEntry {
 
     std::array<float, 4> GetBorderColor() const noexcept;
 
-    float GetMaxAnisotropy() const {
-        const u32 min_value = [] {
-            switch (static_cast<Anisotropy>(Settings::values.max_anisotropy)) {
-            default:
-            case Anisotropy::Default:
-                return 1U;
-            case Anisotropy::Filter2x:
-                return 2U;
-            case Anisotropy::Filter4x:
-                return 4U;
-            case Anisotropy::Filter8x:
-                return 8U;
-            case Anisotropy::Filter16x:
-                return 16U;
-            }
-        }();
-        return static_cast<float>(std::max(1U << max_anisotropy, min_value));
-    }
+    float GetMaxAnisotropy() const noexcept;
 
     float GetMinLod() const {
         return static_cast<float>(min_lod_clamp) / 256.0f;