diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index 9a631b9a7..27d5c1632 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -35,6 +35,19 @@ vk::StencilOp StencilOp(AmdGpu::StencilFunc op) { return vk::StencilOp::eDecrementAndWrap; case AmdGpu::StencilFunc::ReplaceOp: return vk::StencilOp::eReplace; + case AmdGpu::StencilFunc::Ones: + // No Vulkan equivalent; eReplace with reference value 0xFF is the closest approximation. + return vk::StencilOp::eReplace; + case AmdGpu::StencilFunc::And: + case AmdGpu::StencilFunc::Or: + case AmdGpu::StencilFunc::Xor: + case AmdGpu::StencilFunc::Nand: + case AmdGpu::StencilFunc::Nor: + case AmdGpu::StencilFunc::Xnor: + // Bitwise stencil operations have no Vulkan equivalent; eKeep is the safest fallback. + LOG_WARNING(Render_Vulkan, "Unsupported bitwise stencil op {}, using Keep.", + static_cast(op)); + return vk::StencilOp::eKeep; default: UNREACHABLE(); return vk::StencilOp::eKeep;