aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2015-09-03 15:21:52 -0600
committerMark Lobodzinski <mark@lunarg.com>2015-09-09 09:39:15 -0600
commit892306c06b7ce86b5cb3fbff76c4cfdae9214778 (patch)
tree65264b4968edc115698fb61024c32dac8f261f2a
parentb0b110d86e1bca7563b520cac121db7ca208c17b (diff)
downloadusermoji-892306c06b7ce86b5cb3fbff76c4cfdae9214778.tar.xz
vulkan.h: Add bufferFeatures to VkFormatProperties, bug #14546
-rw-r--r--demos/vulkaninfo.c60
-rw-r--r--icd/nulldrv/nulldrv.c1
-rw-r--r--include/vulkan.h1
3 files changed, 32 insertions, 30 deletions
diff --git a/demos/vulkaninfo.c b/demos/vulkaninfo.c
index f96c86e9..8bf283a4 100644
--- a/demos/vulkaninfo.c
+++ b/demos/vulkaninfo.c
@@ -725,39 +725,39 @@ static void app_dev_dump_format_props(const struct app_dev *dev, VkFormat fmt)
struct {
const char *name;
VkFlags flags;
- } tilings[2];
+ } features[3];
uint32_t i;
- if (!props->linearTilingFeatures && !props->optimalTilingFeatures)
- return;
-
- tilings[0].name = "linear ";
- tilings[0].flags = props->linearTilingFeatures;
- tilings[1].name = "optimal";
- tilings[1].flags = props->optimalTilingFeatures;
-
- printf("\nFORMAT_%s:\n", vk_format_string(fmt));
- for (i = 0; i < ARRAY_SIZE(tilings); i++) {
- if (!tilings[i].flags)
- continue;
-
- printf("\t%s tiling image =%s%s%s\n", tilings[i].name,
- (tilings[i].flags & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) ? " sampled" : "",
- (tilings[i].flags & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) ? " storage" : "",
- (tilings[i].flags & VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT) ? " atomic" : "");
- printf("\t%s tiling texel =%s%s%s\n", tilings[i].name,
- (tilings[i].flags & VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT) ? " TBO" : "",
- (tilings[i].flags & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT) ? " IBO" : "",
- (tilings[i].flags & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT) ? " atomic" : "");
- printf("\t%s tiling attachment =%s%s%s\n", tilings[i].name,
- (tilings[i].flags & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) ? " color" : "",
- (tilings[i].flags & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT) ? " blend" : "",
- (tilings[i].flags & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) ? " depth/stencil" : "");
- printf("\t%s tiling vertex = %u\n", tilings[i].name,
- (bool) (tilings[i].flags & VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT));
- printf("\t%s tiling conversion = %u\n", tilings[i].name,
- (bool) (tilings[i].flags & VK_FORMAT_FEATURE_CONVERSION_BIT));
+ features[0].name = "linearTiling FormatFeatureFlags";
+ features[0].flags = props->linearTilingFeatures;
+ features[1].name = "optimalTiling FormatFeatureFlags";
+ features[1].flags = props->optimalTilingFeatures;
+ features[2].name = "bufferFeatures FormatFeatureFlags";
+ features[2].flags = props->bufferFeatures;
+
+ printf("\nFORMAT_%s:", vk_format_string(fmt));
+ for (i = 0; i < ARRAY_SIZE(features); i++) {
+ printf("\n\t%s:", features[i].name);
+ if (features[i].flags == 0) {
+ printf("\n\t\tNone");
+ } else {
+ printf("%s%s%s%s%s%s%s%s%s%s%s%s%s",
+ ((features[i].flags & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT) ? "\n\t\tVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) ? "\n\t\tVK_FORMAT_FEATURE_STORAGE_IMAGE_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT) ? "\n\t\tVK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) ? "\n\t\tVK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT) ? "\n\t\tVK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT) ? "\n\t\tVK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_CONVERSION_BIT) ? "\n\t\tVK_FORMAT_FEATURE_CONVERSION_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_BLIT_SOURCE_BIT) ? "\n\t\tVK_FORMAT_FEATURE_BLIT_SOURCE_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_BLIT_DESTINATION_BIT) ? "\n\t\tVK_FORMAT_FEATURE_BLIT_DESTINATION_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT) ? "\n\t\tVK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT) ? "\n\t\tVK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT) ? "\n\t\tVK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT" : ""),
+ ((features[i].flags & VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT) ? "\n\t\tVK_FORMAT_FEATURE_VERTEX_BUFFER_BIT" : ""));
+ }
}
+ printf("\n");
}
diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c
index a66c7084..539b7305 100644
--- a/icd/nulldrv/nulldrv.c
+++ b/icd/nulldrv/nulldrv.c
@@ -1523,6 +1523,7 @@ ICD_EXPORT VkResult VKAPI vkGetPhysicalDeviceFormatProperties(
pFormatInfo->linearTilingFeatures = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT;
pFormatInfo->optimalTilingFeatures = pFormatInfo->linearTilingFeatures;
+ pFormatInfo->bufferFeatures = 0;
return ret;
}
diff --git a/include/vulkan.h b/include/vulkan.h
index 96762e45..a053269c 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -1218,6 +1218,7 @@ typedef struct {
typedef struct {
VkFormatFeatureFlags linearTilingFeatures;
VkFormatFeatureFlags optimalTilingFeatures;
+ VkFormatFeatureFlags bufferFeatures;
} VkFormatProperties;
typedef struct {