Module: Mesa Branch: main Commit: e006a3d8bc9217192d7f6e70fb5d99859cbe936f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e006a3d8bc9217192d7f6e70fb5d99859cbe936f
Author: Mike Blumenkrantz <[email protected]> Date: Mon Aug 21 09:30:17 2023 -0400 zink: use some return codes for check_ici errors Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24775> --- src/gallium/drivers/zink/zink_resource.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index f2b698de0db..d54fea18bbe 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -313,7 +313,13 @@ create_bci(struct zink_screen *screen, const struct pipe_resource *templ, unsign return bci; } -static bool +typedef enum { + USAGE_FAIL_NONE, + USAGE_FAIL_ERROR, + USAGE_FAIL_SUBOPTIMAL, +} usage_fail; + +static usage_fail check_ici(struct zink_screen *screen, VkImageCreateInfo *ici, uint64_t modifier) { VkImageFormatProperties image_props; @@ -358,16 +364,16 @@ check_ici(struct zink_screen *screen, VkImageCreateInfo *ici, uint64_t modifier) ret = VKSCR(GetPhysicalDeviceImageFormatProperties)(screen->pdev, ici->format, ici->imageType, ici->tiling, ici->usage, ici->flags, &image_props); if (ret != VK_SUCCESS) - return false; + return USAGE_FAIL_ERROR; if (ici->extent.depth > image_props.maxExtent.depth || ici->extent.height > image_props.maxExtent.height || ici->extent.width > image_props.maxExtent.width) - return false; + return USAGE_FAIL_ERROR; if (ici->mipLevels > image_props.maxMipLevels) - return false; + return USAGE_FAIL_ERROR; if (ici->arrayLayers > image_props.maxArrayLayers) - return false; - return true; + return USAGE_FAIL_ERROR; + return USAGE_FAIL_NONE; } static VkImageUsageFlags @@ -459,8 +465,11 @@ double_check_ici(struct zink_screen *screen, VkImageCreateInfo *ici, VkImageUsag const void *pNext = ici->pNext; ici->usage = usage; - if (check_ici(screen, ici, *mod)) + if (!check_ici(screen, ici, *mod)) return true; + if (ici->usage & VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT) { + + } if (pNext) { VkBaseOutStructure *prev = NULL; VkBaseOutStructure *fmt_list = NULL; @@ -478,7 +487,7 @@ double_check_ici(struct zink_screen *screen, VkImageCreateInfo *ici, VkImageUsag prev = strct; } ici->flags &= ~VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; - if (check_ici(screen, ici, *mod)) + if (!check_ici(screen, ici, *mod)) return true; fmt_list->pNext = (void*)ici->pNext; ici->pNext = fmt_list;
