Module: Mesa
Branch: main
Commit: e425f92f3eddc9f38675789103daeb81fd8a5c17
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e425f92f3eddc9f38675789103daeb81fd8a5c17

Author: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Date:   Tue Nov 21 11:36:41 2023 +0100

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.pitoi...@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26316>

---

 src/amd/vulkan/meta/radv_meta_resolve.c    | 14 +++++---------
 src/amd/vulkan/meta/radv_meta_resolve_cs.c | 12 +++++-------
 src/amd/vulkan/meta/radv_meta_resolve_fs.c | 10 ++++------
 3 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/src/amd/vulkan/meta/radv_meta_resolve.c 
b/src/amd/vulkan/meta/radv_meta_resolve.c
index 6414074db6a..7556b947e9a 100644
--- a/src/amd/vulkan/meta/radv_meta_resolve.c
+++ b/src/amd/vulkan/meta/radv_meta_resolve.c
@@ -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),
       }};
 
diff --git a/src/amd/vulkan/meta/radv_meta_resolve_cs.c 
b/src/amd/vulkan/meta/radv_meta_resolve_cs.c
index a2e2f6d8618..423d0f5326d 100644
--- a/src/amd/vulkan/meta/radv_meta_resolve_cs.c
+++ b/src/amd/vulkan/meta/radv_meta_resolve_cs.c
@@ -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,
diff --git a/src/amd/vulkan/meta/radv_meta_resolve_fs.c 
b/src/amd/vulkan/meta/radv_meta_resolve_fs.c
index 3c3f45dd2c0..80111a4de36 100644
--- a/src/amd/vulkan/meta/radv_meta_resolve_fs.c
+++ b/src/amd/vulkan/meta/radv_meta_resolve_fs.c
@@ -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 =
                               {

Reply via email to