|
|
@ -1724,9 +1724,13 @@ void RasterizerVulkan::UpdateBlending(Tegra::Engines::Maxwell3D::Regs& regs) { |
|
|
|
|
|
|
|
|
if (state_tracker.TouchBlendEnable()) { |
|
|
if (state_tracker.TouchBlendEnable()) { |
|
|
std::array<VkBool32, Maxwell::NumRenderTargets> setup_enables{}; |
|
|
std::array<VkBool32, Maxwell::NumRenderTargets> setup_enables{}; |
|
|
std::ranges::transform( |
|
|
|
|
|
regs.blend.enable, setup_enables.begin(), |
|
|
|
|
|
[&](const auto& is_enabled) { return is_enabled != 0 ? VK_TRUE : VK_FALSE; }); |
|
|
|
|
|
|
|
|
for (size_t index = 0; index < Maxwell::NumRenderTargets; index++) { |
|
|
|
|
|
const auto format = |
|
|
|
|
|
VideoCore::Surface::PixelFormatFromRenderTargetFormat(regs.rt[index].format); |
|
|
|
|
|
const bool is_integer = IsPixelFormatInteger(format); |
|
|
|
|
|
setup_enables[index] = |
|
|
|
|
|
(!is_integer && regs.blend.enable[index] != 0) ? VK_TRUE : VK_FALSE; |
|
|
|
|
|
} |
|
|
scheduler.Record([setup_enables](vk::CommandBuffer cmdbuf) { |
|
|
scheduler.Record([setup_enables](vk::CommandBuffer cmdbuf) { |
|
|
cmdbuf.SetColorBlendEnableEXT(0, setup_enables); |
|
|
cmdbuf.SetColorBlendEnableEXT(0, setup_enables); |
|
|
}); |
|
|
}); |
|
|
|