anv/formats: Properly report depth-stencil formats
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 17 Sep 2015 19:36:23 +0000 (12:36 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 18 Sep 2015 00:44:20 +0000 (17:44 -0700)
src/vulkan/anv_formats.c

index f5d00a0f8ffa507d0b504ed204067367fd393db5..516281f2274bba02a0ebaa8b13b0ab3e766254bb 100644 (file)
@@ -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;