zink, kopper: Conitionally add VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT to swap chain imageUsage.

VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT is not supported on MacOS for swap chain images and its use is not always needed.

For MoltenVK report PIPE_CAP_FBFETCH as 0 to back this up.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32651>
This commit is contained in:
duncan.hopkins 2024-11-27 15:26:21 +00:00 committed by Marge Bot
parent 17e5ea118e
commit 8c743d01c7
2 changed files with 7 additions and 2 deletions

View file

@ -274,10 +274,11 @@ kopper_CreateSwapchain(struct zink_screen *screen, struct kopper_displaytarget *
cswap->scci.imageArrayLayers = 1;
cswap->scci.imageUsage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
VK_IMAGE_USAGE_SAMPLED_BIT |
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
if (cdt->caps.supportedUsageFlags & VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT)
cswap->scci.imageUsage |= VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT;
if (cdt->caps.supportedUsageFlags & VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT)
cswap->scci.imageUsage |= VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
cswap->scci.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE;
cswap->scci.queueFamilyIndexCount = 0;
cswap->scci.pQueueFamilyIndices = NULL;

View file

@ -596,7 +596,11 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
}
case PIPE_CAP_FBFETCH:
#if defined(MVK_VERSION)
return 0;
#else
return 1;
#endif
case PIPE_CAP_FBFETCH_COHERENT:
return screen->info.have_EXT_rasterization_order_attachment_access;