summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2020-01-10 20:48:49 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2020-01-10 21:12:50 +0100
commit3d46709b7f8e5fe246b8cd872c32e8728dff7637 (patch)
tree89fecf9bb7cf53dec9d88d6d28c7043e5128bfe2 /src/video_core/renderer_vulkan/maxwell_to_vk.cpp
parentMerge pull request #3279 from ReinUsesLisp/vk-pipeline-cache (diff)
downloadyuzu-3d46709b7f8e5fe246b8cd872c32e8728dff7637.tar
yuzu-3d46709b7f8e5fe246b8cd872c32e8728dff7637.tar.gz
yuzu-3d46709b7f8e5fe246b8cd872c32e8728dff7637.tar.bz2
yuzu-3d46709b7f8e5fe246b8cd872c32e8728dff7637.tar.lz
yuzu-3d46709b7f8e5fe246b8cd872c32e8728dff7637.tar.xz
yuzu-3d46709b7f8e5fe246b8cd872c32e8728dff7637.tar.zst
yuzu-3d46709b7f8e5fe246b8cd872c32e8728dff7637.zip
Diffstat (limited to 'src/video_core/renderer_vulkan/maxwell_to_vk.cpp')
-rw-r--r--src/video_core/renderer_vulkan/maxwell_to_vk.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
index 000e3616d..331808113 100644
--- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
+++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
@@ -44,7 +44,7 @@ vk::SamplerMipmapMode MipmapMode(Tegra::Texture::TextureMipmapFilter mipmap_filt
return {};
}
-vk::SamplerAddressMode WrapMode(Tegra::Texture::WrapMode wrap_mode,
+vk::SamplerAddressMode WrapMode(const VKDevice& device, Tegra::Texture::WrapMode wrap_mode,
Tegra::Texture::TextureFilter filter) {
switch (wrap_mode) {
case Tegra::Texture::WrapMode::Wrap:
@@ -56,7 +56,12 @@ vk::SamplerAddressMode WrapMode(Tegra::Texture::WrapMode wrap_mode,
case Tegra::Texture::WrapMode::Border:
return vk::SamplerAddressMode::eClampToBorder;
case Tegra::Texture::WrapMode::Clamp:
- // TODO(Rodrigo): Emulate GL_CLAMP properly
+ if (device.GetDriverID() == vk::DriverIdKHR::eNvidiaProprietary) {
+ // Nvidia's Vulkan driver defaults to GL_CLAMP on invalid enumerations, we can hack this
+ // by sending an invalid enumeration.
+ return static_cast<vk::SamplerAddressMode>(0xcafe);
+ }
+ // TODO(Rodrigo): Emulate GL_CLAMP properly on other vendors
switch (filter) {
case Tegra::Texture::TextureFilter::Nearest:
return vk::SamplerAddressMode::eClampToEdge;