From 721d0c3e77581d06e08cde29f84ff68cb49bed6e Mon Sep 17 00:00:00 2001 From: Nanley Chery Date: Thu, 15 Aug 2024 17:52:25 -0400 Subject: [PATCH] anv,hasvk: Always use BLORP_BATCH_NO_UPDATE_CLEAR_COLOR Store the clear color from within the drivers, rather than from BLORP. Reviewed-by: Lionel Landwerlin Part-of: --- src/intel/vulkan/anv_blorp.c | 4 ++-- src/intel/vulkan/genX_cmd_buffer.c | 4 ++++ src/intel/vulkan_hasvk/anv_blorp.c | 4 ++-- src/intel/vulkan_hasvk/genX_cmd_buffer.c | 3 +++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c index b2c0c1e19ce..5d4392ef5a9 100644 --- a/src/intel/vulkan/anv_blorp.c +++ b/src/intel/vulkan/anv_blorp.c @@ -2387,7 +2387,7 @@ anv_image_mcs_op(struct anv_cmd_buffer *cmd_buffer, struct blorp_batch batch; anv_blorp_batch_init(cmd_buffer, &batch, BLORP_BATCH_PREDICATE_ENABLE * predicate + - BLORP_BATCH_NO_UPDATE_CLEAR_COLOR * !clear_value); + BLORP_BATCH_NO_UPDATE_CLEAR_COLOR); assert((batch.flags & BLORP_BATCH_USE_COMPUTE) == 0); exec_mcs_op(cmd_buffer, &batch, image, format, swizzle, aspect, @@ -2408,7 +2408,7 @@ anv_image_ccs_op(struct anv_cmd_buffer *cmd_buffer, struct blorp_batch batch; anv_blorp_batch_init(cmd_buffer, &batch, BLORP_BATCH_PREDICATE_ENABLE * predicate + - BLORP_BATCH_NO_UPDATE_CLEAR_COLOR * !clear_value); + BLORP_BATCH_NO_UPDATE_CLEAR_COLOR); assert((batch.flags & BLORP_BATCH_USE_COMPUTE) == 0); exec_ccs_op(cmd_buffer, &batch, image, format, swizzle, aspect, level, diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 6724df2901d..6a28c864f70 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -960,6 +960,10 @@ genX(set_fast_clear_state)(struct anv_cmd_buffer *cmd_buffer, const enum isl_format format, union isl_color_value clear_color) { + uint32_t pixel[4]; + isl_color_value_pack(&clear_color, format, pixel); + set_image_clear_color(cmd_buffer, image, VK_IMAGE_ASPECT_COLOR_BIT, pixel); + if (isl_color_value_is_zero(clear_color, format)) { /* This image has the auxiliary buffer enabled. We can mark the * subresource as not needing a resolve because the clear color diff --git a/src/intel/vulkan_hasvk/anv_blorp.c b/src/intel/vulkan_hasvk/anv_blorp.c index 67f5ecf3868..d375a8be95d 100644 --- a/src/intel/vulkan_hasvk/anv_blorp.c +++ b/src/intel/vulkan_hasvk/anv_blorp.c @@ -1787,7 +1787,7 @@ anv_image_mcs_op(struct anv_cmd_buffer *cmd_buffer, struct blorp_batch batch; anv_blorp_batch_init(cmd_buffer, &batch, BLORP_BATCH_PREDICATE_ENABLE * predicate + - BLORP_BATCH_NO_UPDATE_CLEAR_COLOR * !clear_value); + BLORP_BATCH_NO_UPDATE_CLEAR_COLOR); assert((batch.flags & BLORP_BATCH_USE_COMPUTE) == 0); struct blorp_surf surf; @@ -1877,7 +1877,7 @@ anv_image_ccs_op(struct anv_cmd_buffer *cmd_buffer, struct blorp_batch batch; anv_blorp_batch_init(cmd_buffer, &batch, BLORP_BATCH_PREDICATE_ENABLE * predicate + - BLORP_BATCH_NO_UPDATE_CLEAR_COLOR * !clear_value); + BLORP_BATCH_NO_UPDATE_CLEAR_COLOR); assert((batch.flags & BLORP_BATCH_USE_COMPUTE) == 0); struct blorp_surf surf; diff --git a/src/intel/vulkan_hasvk/genX_cmd_buffer.c b/src/intel/vulkan_hasvk/genX_cmd_buffer.c index b1d4efbc3f1..16463f9ed2e 100644 --- a/src/intel/vulkan_hasvk/genX_cmd_buffer.c +++ b/src/intel/vulkan_hasvk/genX_cmd_buffer.c @@ -5196,6 +5196,9 @@ void genX(CmdBeginRendering)( base_clear_layer++; clear_layer_count--; + set_image_clear_color(cmd_buffer, iview->image, + VK_IMAGE_ASPECT_COLOR_BIT, clear_color); + if (isl_color_value_is_zero(clear_color, iview->planes[0].isl.format)) { /* This image has the auxiliary buffer enabled. We can mark the