Browse Source

[vulkan] Adjust blend targets from texture types

lsfg-android
CamilleLaVey 4 weeks ago
parent
commit
f5720663c2
  1. 10
      src/video_core/renderer_vulkan/vk_rasterizer.cpp

10
src/video_core/renderer_vulkan/vk_rasterizer.cpp

@ -1724,9 +1724,13 @@ void RasterizerVulkan::UpdateBlending(Tegra::Engines::Maxwell3D::Regs& regs) {
if (state_tracker.TouchBlendEnable()) {
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) {
cmdbuf.SetColorBlendEnableEXT(0, setup_enables);
});

Loading…
Cancel
Save