From f9a0b05e3f2a05ed42a9f0a4811d6bb62692149a Mon Sep 17 00:00:00 2001 From: chrelliott978 Date: Tue, 6 Jan 2026 00:31:27 +0100 Subject: [PATCH] Update src/video_core/renderer_vulkan/vk_pipeline_cache.cpp integer frag color change only for moltenVK --- .../renderer_vulkan/vk_pipeline_cache.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index f75398da65..3500c1577d 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -262,9 +262,25 @@ Shader::RuntimeInfo MakeRuntimeInfo(std::span program } info.force_early_z = key.state.early_z != 0; info.y_negate = key.state.y_negate != 0; + info.force_early_z = key.state.early_z != 0; + info.y_negate = key.state.y_negate != 0; + // MoltenVK: Check for integer color attachments + if (device.IsMoltenVK()) { + for (size_t i = 0; i < key.state.attachments.size(); ++i) { + const auto format = key.state.attachments[i]; + if (format == VK_FORMAT_R16G16B16A16_UINT || + format == VK_FORMAT_R16G16B16A16_SINT || + format == VK_FORMAT_R32G32B32A32_UINT || + format == VK_FORMAT_R32G32B32A32_SINT || + format == VK_FORMAT_R8G8B8A8_UINT || + format == VK_FORMAT_R8G8B8A8_SINT) { + info.force_integer_frag_color = true; + break; + } + } + } return info; } - size_t GetTotalPipelineWorkers() { const size_t max_core_threads = std::max(static_cast(std::thread::hardware_concurrency()), 2ULL) - 1ULL;