cmd->state.dirty |= TU_CMD_DIRTY_BLEND;
}
+VKAPI_ATTR void VKAPI_CALL
+tu_CmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer,
+ VkBool32 alphaToOneEnable)
+{
+ TU_FROM_HANDLE(tu_cmd_buffer, cmd, commandBuffer);
+
+ cmd->state.rb_blend_cntl =
+ (cmd->state.rb_blend_cntl & ~A6XX_RB_BLEND_CNTL_ALPHA_TO_ONE) |
+ COND(alphaToOneEnable, A6XX_RB_BLEND_CNTL_ALPHA_TO_ONE);
+
+ cmd->state.dirty |= TU_CMD_DIRTY_BLEND;
+}
+
static void
tu_flush_for_access(struct tu_cache_state *cache,
enum tu_cmd_access_mask src_mask,
features->extendedDynamicState3SampleMask = true;
features->extendedDynamicState3RasterizationSamples = true;
features->extendedDynamicState3AlphaToCoverageEnable = true;
- features->extendedDynamicState3AlphaToOneEnable = false;
+ features->extendedDynamicState3AlphaToOneEnable = true;
features->extendedDynamicState3DepthClipNegativeOneToOne = false;
features->extendedDynamicState3RasterizationStream = false;
features->extendedDynamicState3ConservativeRasterizationMode = false;
pipeline->blend.sp_blend_cntl_mask &=
~A6XX_SP_BLEND_CNTL_ALPHA_TO_COVERAGE;
break;
+ case VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT:
+ pipeline->dynamic_state_mask |= BIT(TU_DYNAMIC_STATE_BLEND);
+ pipeline->blend.rb_blend_cntl_mask &=
+ ~A6XX_RB_BLEND_CNTL_ALPHA_TO_ONE;
+ break;
default:
assert(!"unsupported dynamic state");
break;