Explorar o código

renderer_vulkan: Add the rest of case for TryConvertBorderColor

Nguyen Dac Nam %!s(int64=6) %!d(string=hai) anos
pai
achega
ba84f0988f
Modificáronse 1 ficheiros con 10 adicións e 3 borrados
  1. 10 3
      src/video_core/renderer_vulkan/vk_sampler_cache.cpp

+ 10 - 3
src/video_core/renderer_vulkan/vk_sampler_cache.cpp

@@ -23,7 +23,16 @@ static std::optional<vk::BorderColor> TryConvertBorderColor(std::array<float, 4>
     } else if (color == std::array<float, 4>{1, 1, 1, 1}) {
     } else if (color == std::array<float, 4>{1, 1, 1, 1}) {
         return vk::BorderColor::eFloatOpaqueWhite;
         return vk::BorderColor::eFloatOpaqueWhite;
     } else {
     } else {
-        return {};
+        if (color[0] + color[1] + color[2] > 1.35f) {
+            // If color elements are brighter than roughly 0.5 average, use white border
+            return vk::BorderColor::eFloatOpaqueWhite;
+        } else {
+            if (color[3] > 0.5f) {
+                return vk::BorderColor::eFloatOpaqueBlack;
+            } else {
+                return vk::BorderColor::eFloatTransparentBlack;
+            }
+        }
     }
     }
 }
 }
 
 
@@ -37,8 +46,6 @@ UniqueSampler VKSamplerCache::CreateSampler(const Tegra::Texture::TSCEntry& tsc)
 
 
     const auto border_color{tsc.GetBorderColor()};
     const auto border_color{tsc.GetBorderColor()};
     const auto vk_border_color{TryConvertBorderColor(border_color)};
     const auto vk_border_color{TryConvertBorderColor(border_color)};
-    UNIMPLEMENTED_IF_MSG(!vk_border_color, "Unimplemented border color {} {} {} {}",
-                         border_color[0], border_color[1], border_color[2], border_color[3]);
 
 
     constexpr bool unnormalized_coords{false};
     constexpr bool unnormalized_coords{false};