radv: simplify creating image views for src resolve images

The Vulkan spec says:

"If samples is not VK_SAMPLE_COUNT_1_BIT, then imageType must be
 VK_IMAGE_TYPE_2D, flags must not contain
 VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, mipLevels must be equal to 1..."

So, the source image is always 2D with no mipmaps.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26316>
This commit is contained in:
Samuel Pitoiset
2023-11-21 11:36:41 +01:00
committed by Marge Bot
parent 3816e5dae7
commit e425f92f3e
3 changed files with 14 additions and 22 deletions
+5 -9
View File
@@ -353,8 +353,6 @@ radv_meta_resolve_hardware_image(struct radv_cmd_buffer *cmd_buffer, struct radv
assert(vk_image_subresource_layer_count(&src_image->vk, &region->srcSubresource) ==
vk_image_subresource_layer_count(&dst_image->vk, &region->dstSubresource));
const uint32_t src_base_layer = radv_meta_get_iview_layer(src_image, &region->srcSubresource, &region->srcOffset);
const uint32_t dst_base_layer = radv_meta_get_iview_layer(dst_image, &region->dstSubresource, &region->dstOffset);
/**
@@ -418,14 +416,14 @@ radv_meta_resolve_hardware_image(struct radv_cmd_buffer *cmd_buffer, struct radv
&(VkImageViewCreateInfo){
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
.image = radv_image_to_handle(src_image),
.viewType = radv_meta_get_view_type(src_image),
.viewType = VK_IMAGE_VIEW_TYPE_2D,
.format = src_image->vk.format,
.subresourceRange =
{
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
.baseMipLevel = region->srcSubresource.mipLevel,
.baseMipLevel = 0,
.levelCount = 1,
.baseArrayLayer = src_base_layer + layer,
.baseArrayLayer = region->srcSubresource.baseArrayLayer + layer,
.layerCount = 1,
},
},
@@ -828,8 +826,6 @@ void
radv_decompress_resolve_src(struct radv_cmd_buffer *cmd_buffer, struct radv_image *src_image,
VkImageLayout src_image_layout, const VkImageResolve2 *region)
{
const uint32_t src_base_layer = radv_meta_get_iview_layer(src_image, &region->srcSubresource, &region->srcOffset);
VkImageMemoryBarrier2 barrier = {
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2,
.srcStageMask = VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT,
@@ -841,9 +837,9 @@ radv_decompress_resolve_src(struct radv_cmd_buffer *cmd_buffer, struct radv_imag
.image = radv_image_to_handle(src_image),
.subresourceRange = (VkImageSubresourceRange){
.aspectMask = region->srcSubresource.aspectMask,
.baseMipLevel = region->srcSubresource.mipLevel,
.baseMipLevel = 0,
.levelCount = 1,
.baseArrayLayer = src_base_layer,
.baseArrayLayer = region->srcSubresource.baseArrayLayer,
.layerCount = vk_image_subresource_layer_count(&src_image->vk, &region->srcSubresource),
}};
+5 -7
View File
@@ -611,8 +611,6 @@ radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer, struct radv_
assert(vk_image_subresource_layer_count(&src_image->vk, &region->srcSubresource) ==
vk_image_subresource_layer_count(&dst_image->vk, &region->dstSubresource));
const uint32_t src_base_layer = radv_meta_get_iview_layer(src_image, &region->srcSubresource, &region->srcOffset);
const uint32_t dst_base_layer = radv_meta_get_iview_layer(dst_image, &region->dstSubresource, &region->dstOffset);
const struct VkExtent3D extent = vk_image_sanitize_extent(&src_image->vk, region->extent);
@@ -627,14 +625,14 @@ radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer, struct radv_
&(VkImageViewCreateInfo){
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
.image = radv_image_to_handle(src_image),
.viewType = radv_meta_get_view_type(src_image),
.viewType = VK_IMAGE_VIEW_TYPE_2D,
.format = src_format,
.subresourceRange =
{
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
.baseMipLevel = region->srcSubresource.mipLevel,
.baseMipLevel = 0,
.levelCount = 1,
.baseArrayLayer = src_base_layer + layer,
.baseArrayLayer = region->srcSubresource.baseArrayLayer + layer,
.layerCount = 1,
},
},
@@ -743,12 +741,12 @@ radv_depth_stencil_resolve_rendering_cs(struct radv_cmd_buffer *cmd_buffer, VkIm
&(VkImageViewCreateInfo){
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
.image = radv_image_to_handle(src_image),
.viewType = radv_meta_get_view_type(src_image),
.viewType = VK_IMAGE_VIEW_TYPE_2D,
.format = src_iview->vk.format,
.subresourceRange =
{
.aspectMask = aspects,
.baseMipLevel = src_iview->vk.base_mip_level,
.baseMipLevel = 0,
.levelCount = 1,
.baseArrayLayer = src_iview->vk.base_array_layer,
.layerCount = layer_count,
+4 -6
View File
@@ -729,8 +729,6 @@ radv_meta_resolve_fragment_image(struct radv_cmd_buffer *cmd_buffer, struct radv
assert(vk_image_subresource_layer_count(&src_image->vk, &region->srcSubresource) ==
vk_image_subresource_layer_count(&dst_image->vk, &region->dstSubresource));
const uint32_t src_base_layer = radv_meta_get_iview_layer(src_image, &region->srcSubresource, &region->srcOffset);
const uint32_t dst_base_layer = radv_meta_get_iview_layer(dst_image, &region->dstSubresource, &region->dstOffset);
const struct VkExtent3D extent = vk_image_sanitize_extent(&src_image->vk, region->extent);
@@ -761,14 +759,14 @@ radv_meta_resolve_fragment_image(struct radv_cmd_buffer *cmd_buffer, struct radv
&(VkImageViewCreateInfo){
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
.image = radv_image_to_handle(src_image),
.viewType = radv_meta_get_view_type(src_image),
.viewType = VK_IMAGE_VIEW_TYPE_2D,
.format = src_image->vk.format,
.subresourceRange =
{
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
.baseMipLevel = region->srcSubresource.mipLevel,
.baseMipLevel = 0,
.levelCount = 1,
.baseArrayLayer = src_base_layer + layer,
.baseArrayLayer = region->srcSubresource.baseArrayLayer + layer,
.layerCount = 1,
},
},
@@ -941,7 +939,7 @@ radv_depth_stencil_resolve_rendering_fs(struct radv_cmd_buffer *cmd_buffer, VkIm
&(VkImageViewCreateInfo){
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
.image = radv_image_to_handle(src_image),
.viewType = radv_meta_get_view_type(src_image),
.viewType = VK_IMAGE_VIEW_TYPE_2D,
.format = src_iview->vk.format,
.subresourceRange =
{