zink: use 2 variant to check image format props during create

just to be pedantic

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9984>
This commit is contained in:
Mike Blumenkrantz 2021-02-03 17:28:48 -05:00 committed by Marge Bot
parent 733e07565f
commit 6433661cda
3 changed files with 20 additions and 3 deletions

View File

@ -43,7 +43,8 @@ import sys
EXTENSIONS = [
Extension("VK_EXT_debug_utils"),
Extension("VK_KHR_get_physical_device_properties2",
functions=["GetPhysicalDeviceFeatures2", "GetPhysicalDeviceProperties2", "GetPhysicalDeviceFormatProperties2"]),
functions=["GetPhysicalDeviceFeatures2", "GetPhysicalDeviceProperties2",
"GetPhysicalDeviceFormatProperties2", "GetPhysicalDeviceImageFormatProperties2"]),
Extension("VK_MVK_moltenvk",
nonstandard=True),
]

View File

@ -392,8 +392,23 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t
*optimal_tiling = ici.tiling != VK_IMAGE_TILING_LINEAR;
VkImageFormatProperties image_props;
if (vkGetPhysicalDeviceImageFormatProperties(screen->pdev, ici.format, ici.imageType,
ici.tiling, ici.usage, ici.flags, &image_props) != VK_SUCCESS) {
VkResult ret;
if (screen->vk_GetPhysicalDeviceImageFormatProperties2) {
VkImageFormatProperties2 props2 = {};
props2.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
VkPhysicalDeviceImageFormatInfo2 info = {};
info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
info.format = ici.format;
info.type = ici.imageType;
info.tiling = ici.tiling;
info.usage = ici.usage;
info.flags = ici.flags;
ret = screen->vk_GetPhysicalDeviceImageFormatProperties2(screen->pdev, &info, &props2);
image_props = props2.imageFormatProperties;
} else
ret = vkGetPhysicalDeviceImageFormatProperties(screen->pdev, ici.format, ici.imageType,
ici.tiling, ici.usage, ici.flags, &image_props);
if (ret != VK_SUCCESS) {
FREE(obj);
return NULL;
}

View File

@ -105,6 +105,7 @@ struct zink_screen {
PFN_vkGetPhysicalDeviceFeatures2 vk_GetPhysicalDeviceFeatures2;
PFN_vkGetPhysicalDeviceProperties2 vk_GetPhysicalDeviceProperties2;
PFN_vkGetPhysicalDeviceFormatProperties2 vk_GetPhysicalDeviceFormatProperties2;
PFN_vkGetPhysicalDeviceImageFormatProperties2 vk_GetPhysicalDeviceImageFormatProperties2;
PFN_vkCmdDrawIndirectCount vk_CmdDrawIndirectCount;
PFN_vkCmdDrawIndexedIndirectCount vk_CmdDrawIndexedIndirectCount;