From fdc546057768b241996c00c07018a3cdb0046cd8 Mon Sep 17 00:00:00 2001 From: emiyl Date: Sat, 18 Apr 2026 20:24:46 +0100 Subject: [PATCH] Allow devices without logicop to still work --- src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp index d70cb065..fe2a1e4d 100644 --- a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp +++ b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp @@ -614,12 +614,21 @@ VulkanRenderer::VulkanRenderer() std::set uniqueQueueFamilies = { m_indices.graphicsFamily, m_indices.presentFamily }; std::vector queueCreateInfos = CreateQueueCreateInfos(uniqueQueueFamilies); VkPhysicalDeviceFeatures deviceFeatures = {}; + VkPhysicalDeviceFeatures2 deviceFeatures2 = {}; + deviceFeatures2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; + vkGetPhysicalDeviceFeatures2(m_physicalDevice, &deviceFeatures2); deviceFeatures.independentBlend = VK_TRUE; deviceFeatures.samplerAnisotropy = VK_TRUE; deviceFeatures.imageCubeArray = VK_TRUE; //moltenVK supports logicOp via private api - deviceFeatures.logicOp = VK_TRUE; + deviceFeatures.logicOp = deviceFeatures2.features.logicOp; + if (!deviceFeatures.logicOp) { + cemuLog_log(LogType::Force, "LogicOp not supported by the driver, some rendering issues might occur"); +#if BOOST_OS_MACOS + cemuLog_log(LogType::Force, "Install the privateapi variant of MoltenVK to get logicOp support on macOS"); +#endif + } #if !BOOST_OS_MACOS deviceFeatures.geometryShader = VK_TRUE; #endif