From 0d91dae7f0855aa6cd36d247ee126f7030f75137 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 6 Mar 2020 16:21:55 -0600 Subject: [PATCH] anv: Generalize some aux usage checks For the checks dealing with fast-clear values, we change them to check for the depth aspect because the distinction there really is between color and depth more than between HiZ and CCS. Reviewed-by: Rafael Antognolli Part-of: --- src/intel/vulkan/anv_image.c | 4 ++-- src/intel/vulkan/genX_cmd_buffer.c | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index c468aaf7874..ea9be68e762 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -1682,7 +1682,7 @@ anv_image_fill_surface_state(struct anv_device *device, * value (SKL+), define the clear value to the optimal constant. */ union isl_color_value default_clear_color = { .u32 = { 0, } }; - if (device->info.gen >= 9 && aux_usage == ISL_AUX_USAGE_HIZ) + if (device->info.gen >= 9 && aspect == VK_IMAGE_ASPECT_DEPTH_BIT) default_clear_color.f32[0] = ANV_HZ_FC_VAL; if (!clear_color) clear_color = &default_clear_color; @@ -1782,7 +1782,7 @@ anv_image_fill_surface_state(struct anv_device *device, struct anv_address clear_address = ANV_NULL_ADDRESS; if (device->info.gen >= 10 && aux_usage != ISL_AUX_USAGE_NONE) { - if (aux_usage == ISL_AUX_USAGE_HIZ) { + if (aspect == VK_IMAGE_ASPECT_DEPTH_BIT) { clear_address = (struct anv_address) { .bo = device->hiz_clear_bo, .offset = 0, diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 814a2e58805..2a67ffbd8b3 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -1627,7 +1627,7 @@ genX(BeginCommandBuffer)( VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, layout); - cmd_buffer->state.hiz_enabled = aux_usage == ISL_AUX_USAGE_HIZ; + cmd_buffer->state.hiz_enabled = isl_aux_usage_has_hiz(aux_usage); } } @@ -4854,7 +4854,8 @@ cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer) const uint32_t ds = cmd_buffer->state.subpass->depth_stencil_attachment->attachment; info.hiz_usage = cmd_buffer->state.attachments[ds].aux_usage; - if (info.hiz_usage == ISL_AUX_USAGE_HIZ) { + if (info.hiz_usage != ISL_AUX_USAGE_NONE) { + assert(isl_aux_usage_has_hiz(info.hiz_usage)); info.hiz_surf = &image->planes[depth_plane].aux_surface.isl; info.hiz_address = @@ -4904,7 +4905,7 @@ cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer) (struct anv_address) { cmd_buffer->device->workaround_bo, 0 }; } } - cmd_buffer->state.hiz_enabled = info.hiz_usage == ISL_AUX_USAGE_HIZ; + cmd_buffer->state.hiz_enabled = isl_aux_usage_has_hiz(info.hiz_usage); } /** @@ -5160,7 +5161,7 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer *cmd_buffer, if (att_state->fast_clear && !is_multiview) { /* We currently only support HiZ for single-LOD images */ if (att_state->pending_clear_aspects & VK_IMAGE_ASPECT_DEPTH_BIT) { - assert(iview->image->planes[0].aux_usage == ISL_AUX_USAGE_HIZ); + assert(isl_aux_usage_has_hiz(iview->image->planes[0].aux_usage)); assert(iview->planes[0].isl.base_level == 0); } -- 2.30.2