From 7fd9d347e3dc4aedb1f5f6fbcf0eb5c69d36c82e Mon Sep 17 00:00:00 2001 From: Billy Laws Date: Fri, 29 Jul 2022 19:58:27 +0100 Subject: [PATCH] Use per-RT blend enable registers even when independent blend is disabled The common blend enable register seems to be used for something else. This is required for blending to work correctly in OpenGL games --- .../main/cpp/skyline/gpu/interconnect/graphics_context.h | 6 +----- app/src/main/cpp/skyline/soc/gm20b/engines/maxwell_3d.cpp | 4 ---- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h b/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h index 771e1020..fec76944 100644 --- a/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h +++ b/app/src/main/cpp/skyline/gpu/interconnect/graphics_context.h @@ -1572,11 +1572,6 @@ namespace skyline::gpu::interconnect { blendState.pAttachments = commonRtBlendState.data(); } - void SetColorBlendEnabled(bool enable) { - for (auto &blend : commonRtBlendState) - blend.blendEnable = enable; - } - void SetColorBlendOp(maxwell3d::BlendOp op) { auto vkOp{ConvertBlendOp(op)}; for (auto &blend : commonRtBlendState) @@ -1614,6 +1609,7 @@ namespace skyline::gpu::interconnect { } void SetColorBlendEnabled(u32 index, bool enable) { + commonRtBlendState[index].blendEnable = enable; independentRtBlendState[index].blendEnable = enable; } diff --git a/app/src/main/cpp/skyline/soc/gm20b/engines/maxwell_3d.cpp b/app/src/main/cpp/skyline/soc/gm20b/engines/maxwell_3d.cpp index 39a41bf6..f316cd49 100644 --- a/app/src/main/cpp/skyline/soc/gm20b/engines/maxwell_3d.cpp +++ b/app/src/main/cpp/skyline/soc/gm20b/engines/maxwell_3d.cpp @@ -407,10 +407,6 @@ namespace skyline::soc::gm20b::engine::maxwell3d { context.SetDstAlphaBlendFactor(alphaDstFactor); }) - ENGINE_STRUCT_CASE(blendStateCommon, enable, { - context.SetColorBlendEnabled(enable); - }) - #define SET_COLOR_BLEND_ENABLE_CALLBACK(z, index, data) \ ENGINE_ARRAY_CASE(rtBlendEnable, index, { \ context.SetColorBlendEnabled(index, rtBlendEnable); \