mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
vulkan/meta: Handle VK_REMAINING_ARRAY_LAYERS in blit and resolve
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27795>
This commit is contained in:
parent
8ed3aa7b1a
commit
a72bcc0a26
1 changed files with 25 additions and 14 deletions
|
|
@ -757,6 +757,14 @@ vk_meta_blit_image(struct vk_command_buffer *cmd,
|
|||
&dst_rect.y0, &dst_rect.y1,
|
||||
&push.y_off, &push.y_scale);
|
||||
|
||||
VkImageSubresourceLayers src_subres = regions[r].srcSubresource;
|
||||
src_subres.layerCount =
|
||||
vk_image_subresource_layer_count(src_image, &src_subres);
|
||||
|
||||
VkImageSubresourceLayers dst_subres = regions[r].dstSubresource;
|
||||
dst_subres.layerCount =
|
||||
vk_image_subresource_layer_count(dst_image, &dst_subres);
|
||||
|
||||
uint32_t dst_layer_count;
|
||||
if (src_image->image_type == VK_IMAGE_TYPE_3D) {
|
||||
uint32_t layer0, layer1;
|
||||
|
|
@ -770,18 +778,15 @@ vk_meta_blit_image(struct vk_command_buffer *cmd,
|
|||
dst_rect.layer = layer0;
|
||||
dst_layer_count = layer1 - layer0;
|
||||
} else {
|
||||
assert(regions[r].srcSubresource.layerCount ==
|
||||
regions[r].dstSubresource.layerCount);
|
||||
dst_layer_count = regions[r].dstSubresource.layerCount;
|
||||
push.arr_delta = regions[r].dstSubresource.baseArrayLayer -
|
||||
regions[r].srcSubresource.baseArrayLayer;
|
||||
assert(src_subres.layerCount == dst_subres.layerCount);
|
||||
dst_layer_count = dst_subres.layerCount;
|
||||
push.arr_delta = dst_subres.baseArrayLayer -
|
||||
src_subres.baseArrayLayer;
|
||||
}
|
||||
|
||||
do_blit(cmd, meta,
|
||||
src_image, src_format, src_image_layout,
|
||||
regions[r].srcSubresource,
|
||||
dst_image, dst_format, dst_image_layout,
|
||||
regions[r].dstSubresource,
|
||||
src_image, src_format, src_image_layout, src_subres,
|
||||
dst_image, dst_format, dst_image_layout, dst_subres,
|
||||
sampler, &key, &push, &dst_rect, dst_layer_count);
|
||||
}
|
||||
}
|
||||
|
|
@ -837,13 +842,19 @@ vk_meta_resolve_image(struct vk_command_buffer *cmd,
|
|||
.y1 = regions[r].dstOffset.y + regions[r].extent.height,
|
||||
};
|
||||
|
||||
VkImageSubresourceLayers src_subres = regions[r].srcSubresource;
|
||||
src_subres.layerCount =
|
||||
vk_image_subresource_layer_count(src_image, &src_subres);
|
||||
|
||||
VkImageSubresourceLayers dst_subres = regions[r].dstSubresource;
|
||||
dst_subres.layerCount =
|
||||
vk_image_subresource_layer_count(dst_image, &dst_subres);
|
||||
|
||||
do_blit(cmd, meta,
|
||||
src_image, src_format, src_image_layout,
|
||||
regions[r].srcSubresource,
|
||||
dst_image, dst_format, dst_image_layout,
|
||||
regions[r].dstSubresource,
|
||||
src_image, src_format, src_image_layout, src_subres,
|
||||
dst_image, dst_format, dst_image_layout, dst_subres,
|
||||
VK_NULL_HANDLE, &key, &push, &dst_rect,
|
||||
regions[r].dstSubresource.layerCount);
|
||||
dst_subres.layerCount);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue