From: Jason Ekstrand Date: Thu, 17 Sep 2015 19:36:23 +0000 (-0700) Subject: anv/formats: Properly report depth-stencil formats X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3b8aa26b8eedc415d93bc4f2099d39736e5249b2;p=mesa.git anv/formats: Properly report depth-stencil formats --- diff --git a/src/vulkan/anv_formats.c b/src/vulkan/anv_formats.c index f5d00a0f8ff..516281f2274 100644 --- a/src/vulkan/anv_formats.c +++ b/src/vulkan/anv_formats.c @@ -265,25 +265,30 @@ VkResult anv_GetPhysicalDeviceFormatProperties( if (format->surface_format == UNSUPPORTED) goto unsupported; - info = &surface_formats[format->surface_format]; - if (!info->exists) - goto unsupported; - uint32_t linear = 0, tiled = 0; - if (info->sampling <= gen) { - linear |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT; - tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT; - } - if (info->render_target <= gen) { - linear |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT; - tiled |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT; - } - if (info->alpha_blend <= gen) { - linear |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT; - tiled |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT; - } - if (info->input_vb <= gen) { - linear |= VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT; + if (anv_format_is_depth_or_stencil(format)) { + tiled |= VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT; + } else { + /* The surface_formats table only contains color formats */ + info = &surface_formats[format->surface_format]; + if (!info->exists) + goto unsupported; + + if (info->sampling <= gen) { + linear |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT; + tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT; + } + if (info->render_target <= gen) { + linear |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT; + tiled |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT; + } + if (info->alpha_blend <= gen) { + linear |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT; + tiled |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT; + } + if (info->input_vb <= gen) { + linear |= VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT; + } } pFormatProperties->linearTilingFeatures = linear;