From f5ecb635fe8eb2f1ea37362630f537616c273e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Wed, 12 Oct 2016 11:46:57 +0200 Subject: [PATCH] libs/vkd3d: Ignore blending parameters when blending is disabled. --- libs/vkd3d/state.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c index 8fe03f0c..a0d11339 100644 --- a/libs/vkd3d/state.c +++ b/libs/vkd3d/state.c @@ -573,13 +573,20 @@ static enum VkBlendOp vk_blend_op_from_d3d12(D3D12_BLEND_OP op) static void blend_attachment_from_d3d12(struct VkPipelineColorBlendAttachmentState *vk_desc, const D3D12_RENDER_TARGET_BLEND_DESC *d3d12_desc) { - vk_desc->blendEnable = d3d12_desc->BlendEnable; - vk_desc->srcColorBlendFactor = vk_blend_factor_from_d3d12(d3d12_desc->SrcBlend, false); - vk_desc->dstColorBlendFactor = vk_blend_factor_from_d3d12(d3d12_desc->DestBlend, false); - vk_desc->colorBlendOp = vk_blend_op_from_d3d12(d3d12_desc->BlendOp); - vk_desc->srcAlphaBlendFactor = vk_blend_factor_from_d3d12(d3d12_desc->SrcBlendAlpha, true); - vk_desc->dstAlphaBlendFactor = vk_blend_factor_from_d3d12(d3d12_desc->DestBlendAlpha, true); - vk_desc->alphaBlendOp = vk_blend_op_from_d3d12(d3d12_desc->BlendOpAlpha);; + if (d3d12_desc->BlendEnable) + { + vk_desc->blendEnable = VK_TRUE; + vk_desc->srcColorBlendFactor = vk_blend_factor_from_d3d12(d3d12_desc->SrcBlend, false); + vk_desc->dstColorBlendFactor = vk_blend_factor_from_d3d12(d3d12_desc->DestBlend, false); + vk_desc->colorBlendOp = vk_blend_op_from_d3d12(d3d12_desc->BlendOp); + vk_desc->srcAlphaBlendFactor = vk_blend_factor_from_d3d12(d3d12_desc->SrcBlendAlpha, true); + vk_desc->dstAlphaBlendFactor = vk_blend_factor_from_d3d12(d3d12_desc->DestBlendAlpha, true); + vk_desc->alphaBlendOp = vk_blend_op_from_d3d12(d3d12_desc->BlendOpAlpha); + } + else + { + memset(vk_desc, 0, sizeof(*vk_desc)); + } vk_desc->colorWriteMask = 0; if (d3d12_desc->RenderTargetWriteMask & D3D12_COLOR_WRITE_ENABLE_RED) vk_desc->colorWriteMask |= VK_COLOR_COMPONENT_R_BIT;