From f99ac7f2de1983482452021824c897f56703eb8e Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 25 Mar 2022 19:35:17 -0500 Subject: [PATCH] v3dv: Don't use color aspects for depth/stencil images Reviewed-by: Iago Toral Quiroga Part-of: --- src/broadcom/vulkan/v3dv_meta_copy.c | 8 ++------ src/broadcom/vulkan/v3dvx_cmd_buffer.c | 2 +- src/vulkan/runtime/vk_image.c | 1 - 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c index 37377aa741a..24434d6ee25 100644 --- a/src/broadcom/vulkan/v3dv_meta_copy.c +++ b/src/broadcom/vulkan/v3dv_meta_copy.c @@ -1968,7 +1968,7 @@ texel_buffer_shader_copy(struct v3dv_cmd_buffer *cmd_buffer, /* We only handle color copies. Callers can copy D/S aspects by using * a compatible color format and maybe a cmask/cswizzle for D24 formats. */ - if (aspect != VK_IMAGE_ASPECT_COLOR_BIT) + if (!vk_format_is_color(dst_format) || !vk_format_is_color(src_format)) return handled; /* FIXME: we only handle uncompressed images for now. */ @@ -2568,7 +2568,6 @@ copy_buffer_to_image_shader(struct v3dv_cmd_buffer *cmd_buffer, image->vk.format == VK_FORMAT_X8_D24_UNORM_PACK32); src_format = VK_FORMAT_R8G8B8A8_UINT; dst_format = src_format; - aspect = VK_IMAGE_ASPECT_COLOR_BIT; /* For D24 formats, the Vulkan spec states that the depth component * in the buffer is stored in the 24-LSB, but V3D wants it in the @@ -2598,7 +2597,6 @@ copy_buffer_to_image_shader(struct v3dv_cmd_buffer *cmd_buffer, src_format = VK_FORMAT_R8_UINT; dst_format = VK_FORMAT_R8G8B8A8_UINT; cmask = VK_COLOR_COMPONENT_R_BIT; - aspect = VK_IMAGE_ASPECT_COLOR_BIT; break; default: unreachable("unsupported aspect"); @@ -2606,7 +2604,7 @@ copy_buffer_to_image_shader(struct v3dv_cmd_buffer *cmd_buffer, }; break; case 2: - aspect = VK_IMAGE_ASPECT_COLOR_BIT; + assert(aspect == VK_IMAGE_ASPECT_COLOR_BIT); src_format = VK_FORMAT_R16_UINT; dst_format = src_format; break; @@ -3862,8 +3860,6 @@ blit_shader(struct v3dv_cmd_buffer *cmd_buffer, unreachable("Unsupported depth/stencil format"); }; src_format = dst_format; - region.srcSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - region.dstSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; } const VkColorComponentFlags full_cmask = VK_COLOR_COMPONENT_R_BIT | diff --git a/src/broadcom/vulkan/v3dvx_cmd_buffer.c b/src/broadcom/vulkan/v3dvx_cmd_buffer.c index 2cfe2dc8bd5..b2dd2dc76f6 100644 --- a/src/broadcom/vulkan/v3dvx_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dvx_cmd_buffer.c @@ -2337,7 +2337,7 @@ v3dX(cmd_buffer_render_pass_setup_render_target)(struct v3dv_cmd_buffer *cmd_buf assert(attachment_idx < state->framebuffer->attachment_count && attachment_idx < state->attachment_alloc_count); struct v3dv_image_view *iview = state->attachments[attachment_idx].image_view; - assert(iview->vk.aspects & VK_IMAGE_ASPECT_COLOR_BIT); + assert(vk_format_is_color(iview->vk.format)); *rt_bpp = iview->internal_bpp; *rt_type = iview->internal_type; diff --git a/src/vulkan/runtime/vk_image.c b/src/vulkan/runtime/vk_image.c index 65a4eaa636d..f01998aaa49 100644 --- a/src/vulkan/runtime/vk_image.c +++ b/src/vulkan/runtime/vk_image.c @@ -305,7 +305,6 @@ vk_image_view_init(struct vk_device *device, vk_format_is_depth_or_stencil(image->format) && vk_format_is_color(pCreateInfo->format); if (is_color_view_of_depth_stencil) { - assert(range->aspectMask == VK_IMAGE_ASPECT_COLOR_BIT); assert(util_format_get_blocksize(vk_format_to_pipe_format(image->format)) == util_format_get_blocksize(vk_format_to_pipe_format(pCreateInfo->format))); image_view->aspects = range->aspectMask;