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, ®ion->dstSubresource, ®ion->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, ®ion->dstSubresource, ®ion->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