zink: store VkFormatFeatureFlags on creation
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
28ee911ad6
commit
fffd57ef61
@@ -756,8 +756,8 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t
|
|||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (util_format_is_yuv(templ->format)) {
|
|
||||||
VkFormatFeatureFlags feats = VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM;
|
VkFormatFeatureFlags feats = 0;
|
||||||
switch (ici.tiling) {
|
switch (ici.tiling) {
|
||||||
case VK_IMAGE_TILING_LINEAR:
|
case VK_IMAGE_TILING_LINEAR:
|
||||||
feats = screen->format_props[templ->format].linearTilingFeatures;
|
feats = screen->format_props[templ->format].linearTilingFeatures;
|
||||||
@@ -766,6 +766,7 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t
|
|||||||
feats = screen->format_props[templ->format].optimalTilingFeatures;
|
feats = screen->format_props[templ->format].optimalTilingFeatures;
|
||||||
break;
|
break;
|
||||||
case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT:
|
case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT:
|
||||||
|
feats = VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM;
|
||||||
/*
|
/*
|
||||||
If is tiling then VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, the value of
|
If is tiling then VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, the value of
|
||||||
imageCreateFormatFeatures is found by calling vkGetPhysicalDeviceFormatProperties2
|
imageCreateFormatFeatures is found by calling vkGetPhysicalDeviceFormatProperties2
|
||||||
@@ -784,6 +785,8 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t
|
|||||||
default:
|
default:
|
||||||
unreachable("unknown tiling");
|
unreachable("unknown tiling");
|
||||||
}
|
}
|
||||||
|
obj->vkfeats = feats;
|
||||||
|
if (util_format_is_yuv(templ->format)) {
|
||||||
if (feats & VK_FORMAT_FEATURE_DISJOINT_BIT)
|
if (feats & VK_FORMAT_FEATURE_DISJOINT_BIT)
|
||||||
ici.flags |= VK_IMAGE_CREATE_DISJOINT_BIT;
|
ici.flags |= VK_IMAGE_CREATE_DISJOINT_BIT;
|
||||||
VkSamplerYcbcrConversionCreateInfo sycci = {0};
|
VkSamplerYcbcrConversionCreateInfo sycci = {0};
|
||||||
|
@@ -98,6 +98,7 @@ struct zink_resource_object {
|
|||||||
VkDeviceSize offset, size, alignment;
|
VkDeviceSize offset, size, alignment;
|
||||||
VkImageCreateFlags vkflags;
|
VkImageCreateFlags vkflags;
|
||||||
VkImageUsageFlags vkusage;
|
VkImageUsageFlags vkusage;
|
||||||
|
VkFormatFeatureFlags vkfeats;
|
||||||
uint64_t modifier;
|
uint64_t modifier;
|
||||||
VkImageAspectFlags modifier_aspect;
|
VkImageAspectFlags modifier_aspect;
|
||||||
VkSamplerYcbcrConversion sampler_conversion;
|
VkSamplerYcbcrConversion sampler_conversion;
|
||||||
|
Reference in New Issue
Block a user