From df6749ed56982f056be8c06d7b1af7f84e842fef Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 8 Jun 2023 15:05:46 -0400 Subject: [PATCH] radv: inline radv_can_enable_dual_src() this is unexpectedly heavy Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_pipeline_graphics.c | 19 ------------------- src/amd/vulkan/radv_private.h | 21 +++++++++++++++++++-- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/amd/vulkan/radv_pipeline_graphics.c b/src/amd/vulkan/radv_pipeline_graphics.c index 09c611aed35..63e68f4f0b7 100644 --- a/src/amd/vulkan/radv_pipeline_graphics.c +++ b/src/amd/vulkan/radv_pipeline_graphics.c @@ -260,25 +260,6 @@ radv_format_meta_fs_key(struct radv_device *device, VkFormat format) } } -bool -radv_can_enable_dual_src(const struct vk_color_blend_attachment_state *att) -{ - VkBlendOp eqRGB = att->color_blend_op; - VkBlendFactor srcRGB = att->src_color_blend_factor; - VkBlendFactor dstRGB = att->dst_color_blend_factor; - VkBlendOp eqA = att->alpha_blend_op; - VkBlendFactor srcA = att->src_alpha_blend_factor; - VkBlendFactor dstA = att->dst_alpha_blend_factor; - bool eqRGB_minmax = eqRGB == VK_BLEND_OP_MIN || eqRGB == VK_BLEND_OP_MAX; - bool eqA_minmax = eqA == VK_BLEND_OP_MIN || eqA == VK_BLEND_OP_MAX; - - if (!eqRGB_minmax && (radv_is_dual_src(srcRGB) || radv_is_dual_src(dstRGB))) - return true; - if (!eqA_minmax && (radv_is_dual_src(srcA) || radv_is_dual_src(dstA))) - return true; - return false; -} - static bool radv_pipeline_needs_dynamic_ps_epilog(const struct radv_graphics_pipeline *pipeline) { diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 1a813a7a0dc..3d97e15c8bb 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -3499,6 +3499,25 @@ radv_is_dual_src(VkBlendFactor factor) } } +static ALWAYS_INLINE bool +radv_can_enable_dual_src(const struct vk_color_blend_attachment_state *att) +{ + VkBlendOp eqRGB = att->color_blend_op; + VkBlendFactor srcRGB = att->src_color_blend_factor; + VkBlendFactor dstRGB = att->dst_color_blend_factor; + VkBlendOp eqA = att->alpha_blend_op; + VkBlendFactor srcA = att->src_alpha_blend_factor; + VkBlendFactor dstA = att->dst_alpha_blend_factor; + bool eqRGB_minmax = eqRGB == VK_BLEND_OP_MIN || eqRGB == VK_BLEND_OP_MAX; + bool eqA_minmax = eqA == VK_BLEND_OP_MIN || eqA == VK_BLEND_OP_MAX; + + if (!eqRGB_minmax && (radv_is_dual_src(srcRGB) || radv_is_dual_src(dstRGB))) + return true; + if (!eqA_minmax && (radv_is_dual_src(srcA) || radv_is_dual_src(dstA))) + return true; + return false; +} + static inline void radv_normalize_blend_factor(VkBlendOp op, VkBlendFactor *src_factor, VkBlendFactor *dst_factor) { @@ -3511,8 +3530,6 @@ radv_normalize_blend_factor(VkBlendOp op, VkBlendFactor *src_factor, VkBlendFact void si_blend_remove_dst(VkBlendOp *func, VkBlendFactor *src_factor, VkBlendFactor *dst_factor, VkBlendFactor expected_dst, VkBlendFactor replacement_src); -bool radv_can_enable_dual_src(const struct vk_color_blend_attachment_state *att); - uint32_t radv_get_tess_output_topology(const struct radv_graphics_pipeline *pipeline, VkTessellationDomainOrigin domain_origin);