Mesa (main): radv: Use the common image offset/extent sanitize helpers

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 7 18:25:03 UTC 2022


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

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Sat Jun  4 22:33:37 2022 -0500

radv: Use the common image offset/extent sanitize helpers

Reviewed-by: Dave Airlie <airlied at redhat.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>

---

 src/amd/vulkan/radv_meta_copy.c       | 24 ++++++++++++------------
 src/amd/vulkan/radv_meta_etc_decode.c |  4 ++--
 src/amd/vulkan/radv_meta_resolve.c    |  5 ++---
 src/amd/vulkan/radv_meta_resolve_cs.c |  8 +++-----
 src/amd/vulkan/radv_meta_resolve_fs.c |  8 +++-----
 src/amd/vulkan/radv_private.h         | 30 ------------------------------
 6 files changed, 22 insertions(+), 57 deletions(-)

diff --git a/src/amd/vulkan/radv_meta_copy.c b/src/amd/vulkan/radv_meta_copy.c
index a22a4664ca1..13486f34c77 100644
--- a/src/amd/vulkan/radv_meta_copy.c
+++ b/src/amd/vulkan/radv_meta_copy.c
@@ -40,12 +40,12 @@ meta_region_extent_el(const struct radv_image *image, const VkImageType imageTyp
                       const struct VkExtent3D *extent)
 {
    const VkExtent3D block = meta_image_block_size(image);
-   return radv_sanitize_image_extent(imageType,
-                                     (VkExtent3D){
-                                        .width = DIV_ROUND_UP(extent->width, block.width),
-                                        .height = DIV_ROUND_UP(extent->height, block.height),
-                                        .depth = DIV_ROUND_UP(extent->depth, block.depth),
-                                     });
+   return vk_image_sanitize_extent(&image->vk,
+                                   (VkExtent3D){
+                                      .width = DIV_ROUND_UP(extent->width, block.width),
+                                      .height = DIV_ROUND_UP(extent->height, block.height),
+                                      .depth = DIV_ROUND_UP(extent->depth, block.depth),
+                                   });
 }
 
 /* Returns the user-provided VkBufferImageCopy::imageOffset in units of
@@ -56,12 +56,12 @@ static struct VkOffset3D
 meta_region_offset_el(const struct radv_image *image, const struct VkOffset3D *offset)
 {
    const VkExtent3D block = meta_image_block_size(image);
-   return radv_sanitize_image_offset(image->vk.image_type,
-                                     (VkOffset3D){
-                                        .x = offset->x / block.width,
-                                        .y = offset->y / block.height,
-                                        .z = offset->z / block.depth,
-                                     });
+   return vk_image_sanitize_offset(&image->vk,
+                                   (VkOffset3D){
+                                      .x = offset->x / block.width,
+                                      .y = offset->y / block.height,
+                                      .z = offset->z / block.depth,
+                                   });
 }
 
 static VkFormat
diff --git a/src/amd/vulkan/radv_meta_etc_decode.c b/src/amd/vulkan/radv_meta_etc_decode.c
index db3318525ef..958c1219a46 100644
--- a/src/amd/vulkan/radv_meta_etc_decode.c
+++ b/src/amd/vulkan/radv_meta_etc_decode.c
@@ -730,8 +730,8 @@ radv_meta_decode_etc(struct radv_cmd_buffer *cmd_buffer, struct radv_image *imag
    uint32_t base_slice = radv_meta_get_iview_layer(image, subresource, &offset);
    uint32_t slice_count = image->vk.image_type == VK_IMAGE_TYPE_3D ? extent.depth : subresource->layerCount;
 
-   extent = radv_sanitize_image_extent(image->vk.image_type, extent);
-   offset = radv_sanitize_image_offset(image->vk.image_type, offset);
+   extent = vk_image_sanitize_extent(&image->vk, extent);
+   offset = vk_image_sanitize_offset(&image->vk, offset);
 
    VkFormat load_format = vk_format_get_blocksize(image->vk.format) == 16
                              ? VK_FORMAT_R32G32B32A32_UINT
diff --git a/src/amd/vulkan/radv_meta_resolve.c b/src/amd/vulkan/radv_meta_resolve.c
index e37bb6fad78..0fd346517ce 100644
--- a/src/amd/vulkan/radv_meta_resolve.c
+++ b/src/amd/vulkan/radv_meta_resolve.c
@@ -402,9 +402,8 @@ radv_meta_resolve_hardware_image(struct radv_cmd_buffer *cmd_buffer, struct radv
     *    height and depth. 1D images use only x and width. 2D images use x, y,
     *    width and height. 3D images use x, y, z, width, height and depth.
     */
-   const struct VkExtent3D extent = radv_sanitize_image_extent(src_image->vk.image_type, region->extent);
-   const struct VkOffset3D dstOffset =
-      radv_sanitize_image_offset(dst_image->vk.image_type, region->dstOffset);
+   const struct VkExtent3D extent = vk_image_sanitize_extent(&src_image->vk, region->extent);
+   const struct VkOffset3D dstOffset = vk_image_sanitize_offset(&dst_image->vk, region->dstOffset);
 
    uint32_t queue_mask = radv_image_queue_family_mask(dst_image, cmd_buffer->qf,
                                                       cmd_buffer->qf);
diff --git a/src/amd/vulkan/radv_meta_resolve_cs.c b/src/amd/vulkan/radv_meta_resolve_cs.c
index e34cb4ea2a0..2e4da3ff749 100644
--- a/src/amd/vulkan/radv_meta_resolve_cs.c
+++ b/src/amd/vulkan/radv_meta_resolve_cs.c
@@ -700,11 +700,9 @@ radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer, struct radv_
    const uint32_t dest_base_layer =
       radv_meta_get_iview_layer(dest_image, &region->dstSubresource, &region->dstOffset);
 
-   const struct VkExtent3D extent = radv_sanitize_image_extent(src_image->vk.image_type, region->extent);
-   const struct VkOffset3D srcOffset =
-      radv_sanitize_image_offset(src_image->vk.image_type, region->srcOffset);
-   const struct VkOffset3D dstOffset =
-      radv_sanitize_image_offset(dest_image->vk.image_type, region->dstOffset);
+   const struct VkExtent3D extent = vk_image_sanitize_extent(&src_image->vk, region->extent);
+   const struct VkOffset3D srcOffset = vk_image_sanitize_offset(&src_image->vk, region->srcOffset);
+   const struct VkOffset3D dstOffset = vk_image_sanitize_offset(&dest_image->vk, region->dstOffset);
 
    for (uint32_t layer = 0; layer < region->srcSubresource.layerCount; ++layer) {
 
diff --git a/src/amd/vulkan/radv_meta_resolve_fs.c b/src/amd/vulkan/radv_meta_resolve_fs.c
index 38ea75daba7..e6e95dff96d 100644
--- a/src/amd/vulkan/radv_meta_resolve_fs.c
+++ b/src/amd/vulkan/radv_meta_resolve_fs.c
@@ -815,11 +815,9 @@ radv_meta_resolve_fragment_image(struct radv_cmd_buffer *cmd_buffer, struct radv
    const uint32_t dest_base_layer =
       radv_meta_get_iview_layer(dest_image, &region->dstSubresource, &region->dstOffset);
 
-   const struct VkExtent3D extent = radv_sanitize_image_extent(src_image->vk.image_type, region->extent);
-   const struct VkOffset3D srcOffset =
-      radv_sanitize_image_offset(src_image->vk.image_type, region->srcOffset);
-   const struct VkOffset3D dstOffset =
-      radv_sanitize_image_offset(dest_image->vk.image_type, region->dstOffset);
+   const struct VkExtent3D extent = vk_image_sanitize_extent(&src_image->vk, region->extent);
+   const struct VkOffset3D srcOffset = vk_image_sanitize_offset(&src_image->vk, region->srcOffset);
+   const struct VkOffset3D dstOffset = vk_image_sanitize_offset(&dest_image->vk, region->dstOffset);
 
    for (uint32_t layer = 0; layer < region->srcSubresource.layerCount; ++layer) {
 
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 02b4f6f16b8..d2295187b20 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -2663,36 +2663,6 @@ void radv_buffer_view_init(struct radv_buffer_view *view, struct radv_device *de
                            const VkBufferViewCreateInfo *pCreateInfo);
 void radv_buffer_view_finish(struct radv_buffer_view *view);
 
-static inline struct VkExtent3D
-radv_sanitize_image_extent(const VkImageType imageType, const struct VkExtent3D imageExtent)
-{
-   switch (imageType) {
-   case VK_IMAGE_TYPE_1D:
-      return (VkExtent3D){imageExtent.width, 1, 1};
-   case VK_IMAGE_TYPE_2D:
-      return (VkExtent3D){imageExtent.width, imageExtent.height, 1};
-   case VK_IMAGE_TYPE_3D:
-      return imageExtent;
-   default:
-      unreachable("invalid image type");
-   }
-}
-
-static inline struct VkOffset3D
-radv_sanitize_image_offset(const VkImageType imageType, const struct VkOffset3D imageOffset)
-{
-   switch (imageType) {
-   case VK_IMAGE_TYPE_1D:
-      return (VkOffset3D){imageOffset.x, 0, 0};
-   case VK_IMAGE_TYPE_2D:
-      return (VkOffset3D){imageOffset.x, imageOffset.y, 0};
-   case VK_IMAGE_TYPE_3D:
-      return imageOffset;
-   default:
-      unreachable("invalid image type");
-   }
-}
-
 static inline bool
 radv_image_extent_compare(const struct radv_image *image, const VkExtent3D *extent)
 {



More information about the mesa-commit mailing list