mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 13:40:11 +01:00
radv: adjust the source aspect for color to depth/stencil image copies
The opposite is already supported. Note that only one aspect (depth or stencil) is supported when it's a copy<->depth/stencil copy, and multiplanar images aren't supported. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33091>
This commit is contained in:
parent
3be1e9ee4d
commit
40131ddadc
2 changed files with 20 additions and 3 deletions
|
|
@ -162,6 +162,14 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer, struct radv_meta
|
|||
else if (src_img)
|
||||
src_aspect_mask = src_img->aspect_mask;
|
||||
|
||||
/* Adjust the aspect for color to depth/stencil image copies. */
|
||||
if (src_img) {
|
||||
if (vk_format_is_color(src_img->image->vk.format) && vk_format_is_depth_or_stencil(dst->image->vk.format)) {
|
||||
assert(src_img->aspect_mask == VK_IMAGE_ASPECT_COLOR_BIT);
|
||||
src_aspect_mask = src_img->aspect_mask;
|
||||
}
|
||||
}
|
||||
|
||||
struct radv_image_view dst_iview;
|
||||
create_iview(cmd_buffer, dst, &dst_iview, depth_format, aspect_mask);
|
||||
|
||||
|
|
@ -233,8 +241,9 @@ radv_meta_blit2d_normal_dst(struct radv_cmd_buffer *cmd_buffer, struct radv_meta
|
|||
vertex_push_constants);
|
||||
|
||||
struct blit2d_src_temps src_temps;
|
||||
blit2d_bind_src(cmd_buffer, layout, src_img, src_buf, &src_temps, src_type, depth_format, src_aspect_mask,
|
||||
log2_samples);
|
||||
blit2d_bind_src(cmd_buffer, layout, src_img, src_buf, &src_temps, src_type,
|
||||
(src_aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) ? depth_format : 0,
|
||||
src_aspect_mask, log2_samples);
|
||||
|
||||
radv_CmdBeginRendering(radv_cmd_buffer_to_handle(cmd_buffer), &rendering_info);
|
||||
|
||||
|
|
|
|||
|
|
@ -1340,7 +1340,15 @@ radv_meta_image_to_image_cs(struct radv_cmd_buffer *cmd_buffer, struct radv_meta
|
|||
src_aspect_mask = src->aspect_mask;
|
||||
}
|
||||
|
||||
create_iview(cmd_buffer, src, &src_view, depth_format, src_aspect_mask);
|
||||
/* Adjust the aspect for color to depth/stencil image copies. */
|
||||
if (vk_format_is_color(src->image->vk.format) && vk_format_is_depth_or_stencil(dst->image->vk.format)) {
|
||||
assert(src->aspect_mask == VK_IMAGE_ASPECT_COLOR_BIT);
|
||||
src_aspect_mask = src->aspect_mask;
|
||||
}
|
||||
|
||||
create_iview(cmd_buffer, src, &src_view,
|
||||
(src_aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) ? depth_format : 0,
|
||||
src_aspect_mask);
|
||||
create_iview(cmd_buffer, dst, &dst_view, depth_format, dst_aspect_mask);
|
||||
|
||||
radv_meta_push_descriptor_set(
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue