diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 63833de1ff8..691ee223b5a 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -5218,13 +5218,14 @@ radv_emit_color_blend(struct radv_cmd_buffer *cmd_buffer) if (i > 0 && mrt0_is_dual_src) continue; - if (!d->vk.cb.attachments[i].blend_enable) { - /* Disable logic op for float/srgb formats when blending isn't enabled. Otherwise it's - * implicitly disabled. - */ - if (vk_format_is_float(render->color_att[i].format) || vk_format_is_srgb(render->color_att[i].format)) - cb_blend_control[i] |= S_028780_DISABLE_ROP3(1); + /* Disable logic op for float/srgb formats because it shouldn't be applied. */ + if (d->vk.cb.logic_op_enable && + (vk_format_is_float(render->color_att[i].format) || vk_format_is_srgb(render->color_att[i].format))) { + cb_blend_control[i] |= S_028780_DISABLE_ROP3(1); + continue; + } + if (!d->vk.cb.attachments[i].blend_enable) { sx_mrt_blend_opt[i] |= S_028760_COLOR_COMB_FCN(V_028760_OPT_COMB_BLEND_DISABLED) | S_028760_ALPHA_COMB_FCN(V_028760_OPT_COMB_BLEND_DISABLED); continue; @@ -5549,8 +5550,8 @@ radv_cmd_buffer_flush_dynamic_state(struct radv_cmd_buffer *cmd_buffer, const ui if (states & (RADV_DYNAMIC_DEPTH_CLAMP_ENABLE | RADV_DYNAMIC_DEPTH_CLIP_ENABLE)) radv_emit_depth_clamp_enable(cmd_buffer); - if (states & - (RADV_DYNAMIC_COLOR_BLEND_ENABLE | RADV_DYNAMIC_COLOR_BLEND_EQUATION | RADV_DYNAMIC_ALPHA_TO_COVERAGE_ENABLE)) + if (states & (RADV_DYNAMIC_COLOR_BLEND_ENABLE | RADV_DYNAMIC_COLOR_BLEND_EQUATION | + RADV_DYNAMIC_ALPHA_TO_COVERAGE_ENABLE | RADV_DYNAMIC_LOGIC_OP_ENABLE)) radv_emit_color_blend(cmd_buffer); if (states & (RADV_DYNAMIC_RASTERIZATION_SAMPLES | RADV_DYNAMIC_LINE_RASTERIZATION_MODE |