From 9efe66e5b251b7ab12d67098ce40b2903fcf9515 Mon Sep 17 00:00:00 2001 From: Zephyron Date: Sun, 7 Dec 2025 17:43:30 +1000 Subject: [PATCH] fix(vulkan): implement MirrorOnceClampOGL wrap mode Adds support for wrap mode 7 (MirrorOnceClampOGL) in the Vulkan renderer's WrapMode function. This mode is mapped to VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE as Vulkan doesn't have a direct equivalent to OpenGL's GL_MIRROR_CLAMP. Fixes assertion failure: "Unimplemented wrap mode=7" Signed-off-by: Zephyron --- src/video_core/renderer_vulkan/maxwell_to_vk.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index a08f2f67f..cde27ddfe 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2025 citron Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #include @@ -78,6 +79,10 @@ VkSamplerAddressMode WrapMode(const Device& device, Tegra::Texture::WrapMode wra case Tegra::Texture::WrapMode::MirrorOnceBorder: UNIMPLEMENTED(); return VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE; + case Tegra::Texture::WrapMode::MirrorOnceClampOGL: + // Vulkan doesn't have a direct equivalent to GL_MIRROR_CLAMP, so we use + // MIRROR_CLAMP_TO_EDGE as a fallback (similar to OpenGL when extension isn't available) + return VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE; default: UNIMPLEMENTED_MSG("Unimplemented wrap mode={}", wrap_mode); return {};