From 8259af094e59b1e3538d84551054367e30e91d58 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 7 Jun 2023 21:21:04 -0400 Subject: [PATCH] zink: only try to create srgb mutable images if the vk format is supported otherwise this is just a regular single-format image cc: mesa-stable Part-of: (cherry picked from commit 8f56228ace6923a488abcf4a8dd3b52e5957f9cb) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_resource.c | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index e5fb5023ab5..a76b14f4c74 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1201,7 +1201,7 @@ "description": "zink: only try to create srgb mutable images if the vk format is supported", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 012f3ac53eb..83283041455 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -736,14 +736,19 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t VkFormat formats[2]; VkImageFormatListCreateInfo format_list; if (srgb) { - format_list.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO; - format_list.pNext = NULL; - format_list.viewFormatCount = 2; - format_list.pViewFormats = formats; - formats[0] = zink_get_format(screen, templ->format); formats[1] = zink_get_format(screen, srgb); - ici.pNext = &format_list; + /* only use format list if both formats have supported vk equivalents */ + if (formats[0] && formats[1]) { + format_list.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO; + format_list.pNext = NULL; + format_list.viewFormatCount = 2; + format_list.pViewFormats = formats; + + ici.pNext = &format_list; + } else { + ici.pNext = NULL; + } } else { ici.pNext = NULL; }