X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Famd%2Fvulkan%2Fradv_meta_blit2d.c;h=1fb5529b410eaae59eac2cfda21160371cac1552;hb=c39a1611ab36cbeb10590dde937a8c11f3b87b02;hp=d710749afabb9883ef83a42a6bf7b03ec293bec6;hpb=40585ddb48620325816f1526bb6e3407f8356490;p=mesa.git diff --git a/src/amd/vulkan/radv_meta_blit2d.c b/src/amd/vulkan/radv_meta_blit2d.c index d710749afab..1fb5529b410 100644 --- a/src/amd/vulkan/radv_meta_blit2d.c +++ b/src/amd/vulkan/radv_meta_blit2d.c @@ -256,13 +256,17 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer, unsigned i; for_each_bit(i, dst->aspect_mask) { unsigned aspect_mask = 1u << i; + unsigned src_aspect_mask = aspect_mask; VkFormat depth_format = 0; if (aspect_mask == VK_IMAGE_ASPECT_STENCIL_BIT) depth_format = vk_format_stencil_only(dst->image->vk_format); else if (aspect_mask == VK_IMAGE_ASPECT_DEPTH_BIT) depth_format = vk_format_depth_only(dst->image->vk_format); + else if (src_img) + src_aspect_mask = src_img->aspect_mask; + struct blit2d_src_temps src_temps; - blit2d_bind_src(cmd_buffer, src_img, src_buf, &src_temps, src_type, depth_format, aspect_mask, log2_samples); + blit2d_bind_src(cmd_buffer, src_img, src_buf, &src_temps, src_type, depth_format, src_aspect_mask, log2_samples); struct blit2d_dst_temps dst_temps; blit2d_bind_dst(cmd_buffer, dst, rects[r].dst_x + rects[r].width, @@ -280,7 +284,10 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer, VK_SHADER_STAGE_VERTEX_BIT, 0, 16, vertex_push_constants); - if (aspect_mask == VK_IMAGE_ASPECT_COLOR_BIT) { + if (aspect_mask == VK_IMAGE_ASPECT_COLOR_BIT || + aspect_mask == VK_IMAGE_ASPECT_PLANE_0_BIT || + aspect_mask == VK_IMAGE_ASPECT_PLANE_1_BIT || + aspect_mask == VK_IMAGE_ASPECT_PLANE_2_BIT) { unsigned fs_key = radv_format_meta_fs_key(dst_temps.iview.vk_format); unsigned dst_layout = radv_meta_dst_layout_from_layout(dst->current_layout); @@ -807,8 +814,8 @@ blit2d_init_color_pipeline(struct radv_device *device, .attachment = VK_ATTACHMENT_UNUSED, .layout = layout, }, - .preserveAttachmentCount = 1, - .pPreserveAttachments = (uint32_t[]) { 0 }, + .preserveAttachmentCount = 0, + .pPreserveAttachments = NULL, }, .dependencyCount = 0, }, &device->meta_state.alloc, &device->meta_state.blit2d_render_passes[fs_key][dst_layout]); @@ -978,8 +985,8 @@ blit2d_init_depth_only_pipeline(struct radv_device *device, .attachment = 0, .layout = layout, }, - .preserveAttachmentCount = 1, - .pPreserveAttachments = (uint32_t[]) { 0 }, + .preserveAttachmentCount = 0, + .pPreserveAttachments = NULL, }, .dependencyCount = 0, }, &device->meta_state.alloc, &device->meta_state.blit2d_depth_only_rp[ds_layout]); @@ -1148,8 +1155,8 @@ blit2d_init_stencil_only_pipeline(struct radv_device *device, .attachment = 0, .layout = layout, }, - .preserveAttachmentCount = 1, - .pPreserveAttachments = (uint32_t[]) { 0 }, + .preserveAttachmentCount = 0, + .pPreserveAttachments = NULL, }, .dependencyCount = 0, }, &device->meta_state.alloc, &device->meta_state.blit2d_stencil_only_rp[ds_layout]);