vulkan.h: Add bufferFeatures to VkFormatProperties, bug #14546
diff --git a/icd/intel/format.c b/icd/intel/format.c
index bbde68a..2ab09cb 100644
--- a/icd/intel/format.c
+++ b/icd/intel/format.c
@@ -649,25 +649,35 @@
         VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT : 0;
 }
 
+// These format features flags are supported by buffers.  Remaining flags
+// are supported by optimal/linear tiling images.
+static VkFlags bufferFormatsFlagMask =  VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
+                                        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
+                                        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
+                                        VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT;
+
 static void intel_format_get_props(const struct intel_gpu *gpu,
                                    VkFormat format,
                                    VkFormatProperties *props)
 {
     if (icd_format_is_undef(format)) {
-        props->linearTilingFeatures =
-            intel_format_get_raw_features(gpu, format);
+        props->linearTilingFeatures  = intel_format_get_raw_features(gpu, format);
         props->optimalTilingFeatures = 0;
+        props->bufferFeatures        = 0;
     } else if(icd_format_is_color(format)) {
-        props->linearTilingFeatures =
-            intel_format_get_color_features(gpu, format);
-        props->optimalTilingFeatures = props->linearTilingFeatures;
+        VkFlags formatFlags = NULL;
+        formatFlags = intel_format_get_color_features(gpu, format);
+        props->linearTilingFeatures  = formatFlags & ~bufferFormatsFlagMask;
+        props->optimalTilingFeatures = formatFlags & ~bufferFormatsFlagMask;
+        props->bufferFeatures        = formatFlags &  bufferFormatsFlagMask;
     } else if(icd_format_is_ds(format)) {
-        props->linearTilingFeatures = 0;
-        props->optimalTilingFeatures =
-            intel_format_get_ds_features(gpu, format);
+        props->linearTilingFeatures  = 0;
+        props->optimalTilingFeatures = intel_format_get_ds_features(gpu, format);
+        props->bufferFeatures        = 0;
     } else {
-        props->linearTilingFeatures = 0;
+        props->linearTilingFeatures  = 0;
         props->optimalTilingFeatures = 0;
+        props->bufferFeatures        = 0;
     }
 }
 
@@ -693,4 +703,4 @@
     VkImageFormatProperties*                    pImageFormatProperties)
 {
     return VK_ERROR_UNAVAILABLE;
-}
\ No newline at end of file
+}