From 6967d32bebf84b715d4fd6dd4a750d1fc75f8991 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 13 Apr 2018 19:14:45 +0200 Subject: [PATCH] radv: add radv_handle_color_image_transition() helper To handle CMASK, FMASK and DCC transitions in the same place. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Niuwenhuizen --- src/amd/vulkan/radv_cmd_buffer.c | 34 +++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 92c00f5394d..270dcd5a9e0 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -3819,6 +3819,28 @@ static void radv_handle_dcc_image_transition(struct radv_cmd_buffer *cmd_buffer, } } +/** + * Handle color image transitions for DCC/FMASK/CMASK. + */ +static void radv_handle_color_image_transition(struct radv_cmd_buffer *cmd_buffer, + struct radv_image *image, + VkImageLayout src_layout, + VkImageLayout dst_layout, + unsigned src_queue_mask, + unsigned dst_queue_mask, + const VkImageSubresourceRange *range) +{ + if (radv_image_has_dcc(image)) + radv_handle_dcc_image_transition(cmd_buffer, image, src_layout, + dst_layout, src_queue_mask, + dst_queue_mask, range); + + if (radv_image_has_cmask(image) || radv_image_has_fmask(image)) + radv_handle_cmask_image_transition(cmd_buffer, image, src_layout, + dst_layout, src_queue_mask, + dst_queue_mask, range); +} + static void radv_handle_image_transition(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image, VkImageLayout src_layout, @@ -3854,15 +3876,9 @@ static void radv_handle_image_transition(struct radv_cmd_buffer *cmd_buffer, dst_queue_mask, range, pending_clears); - if (radv_image_has_dcc(image)) - radv_handle_dcc_image_transition(cmd_buffer, image, src_layout, - dst_layout, src_queue_mask, - dst_queue_mask, range); - - if (radv_image_has_cmask(image) || radv_image_has_fmask(image)) - radv_handle_cmask_image_transition(cmd_buffer, image, src_layout, - dst_layout, src_queue_mask, - dst_queue_mask, range); + radv_handle_color_image_transition(cmd_buffer, image, src_layout, + dst_layout, src_queue_mask, + dst_queue_mask, range); } void radv_CmdPipelineBarrier(