zink: use modifier feature flags during surface creation when necessary
cc: mesa-stable Acked-by: Emma Anholt <emma@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17773>
This commit is contained in:

committed by
Marge Bot

parent
c9250d3ee3
commit
22eff86eaf
@@ -147,6 +147,14 @@ create_surface(struct pipe_context *pctx,
|
|||||||
screen->format_props[templ->format].linearTilingFeatures;
|
screen->format_props[templ->format].linearTilingFeatures;
|
||||||
VkImageUsageFlags attachment = (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT);
|
VkImageUsageFlags attachment = (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT);
|
||||||
usage_info.usage = res->obj->vkusage & ~attachment;
|
usage_info.usage = res->obj->vkusage & ~attachment;
|
||||||
|
if (res->obj->modifier_aspect) {
|
||||||
|
feats = res->obj->vkfeats;
|
||||||
|
/* intersect format features for current modifier */
|
||||||
|
for (unsigned i = 0; i < screen->modifier_props[templ->format].drmFormatModifierCount; i++) {
|
||||||
|
if (res->obj->modifier == screen->modifier_props[templ->format].pDrmFormatModifierProperties[i].drmFormatModifier)
|
||||||
|
feats &= screen->modifier_props[templ->format].pDrmFormatModifierProperties[i].drmFormatModifierTilingFeatures;
|
||||||
|
}
|
||||||
|
}
|
||||||
if ((res->obj->vkusage & attachment) &&
|
if ((res->obj->vkusage & attachment) &&
|
||||||
!(feats & (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT))) {
|
!(feats & (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT))) {
|
||||||
ivci->pNext = &usage_info;
|
ivci->pNext = &usage_info;
|
||||||
|
Reference in New Issue
Block a user