From 98c2bb69172944e909922f00422bd235b8e543cc Mon Sep 17 00:00:00 2001 From: Chad Versace Date: Wed, 7 Oct 2015 10:15:59 -0700 Subject: [PATCH] vk/0.170.2: Update VkFormatProperties --- include/vulkan/vulkan.h | 4 +++- src/vulkan/anv_formats.c | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/include/vulkan/vulkan.h b/include/vulkan/vulkan.h index 467a20619dd..1bcc31c59d9 100644 --- a/include/vulkan/vulkan.h +++ b/include/vulkan/vulkan.h @@ -851,7 +851,8 @@ typedef enum { VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, - VK_FORMAT_FEATURE_CONVERSION_BIT = 0x00000400, + VK_FORMAT_FEATURE_BLIT_SOURCE_BIT = 0x00000400, + VK_FORMAT_FEATURE_BLIT_DESTINATION_BIT = 0x00000800, } VkFormatFeatureFlagBits; typedef VkFlags VkFormatFeatureFlags; @@ -1199,6 +1200,7 @@ typedef struct { typedef struct { VkFormatFeatureFlags linearTilingFeatures; VkFormatFeatureFlags optimalTilingFeatures; + VkFormatFeatureFlags bufferFeatures; } VkFormatProperties; typedef struct { diff --git a/src/vulkan/anv_formats.c b/src/vulkan/anv_formats.c index cae575bb04b..8f36bc9a7ce 100644 --- a/src/vulkan/anv_formats.c +++ b/src/vulkan/anv_formats.c @@ -252,6 +252,7 @@ anv_physical_device_get_format_properties(struct anv_physical_device *physical_d { const struct surface_format_info *info; int gen; + VkFormatFeatureFlags flags; if (format == NULL) return VK_ERROR_INVALID_VALUE; @@ -267,6 +268,10 @@ anv_physical_device_get_format_properties(struct anv_physical_device *physical_d if (anv_format_is_depth_or_stencil(format)) { tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT; tiled |= VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT; + tiled |= VK_FORMAT_FEATURE_BLIT_SOURCE_BIT; + if (format->depth_format) { + tiled |= VK_FORMAT_FEATURE_BLIT_DESTINATION_BIT; + } } else { /* The surface_formats table only contains color formats */ info = &surface_formats[format->surface_format]; @@ -274,12 +279,16 @@ anv_physical_device_get_format_properties(struct anv_physical_device *physical_d goto unsupported; if (info->sampling <= gen) { - linear |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT; - tiled |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT; + flags = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | + VK_FORMAT_FEATURE_BLIT_SOURCE_BIT; + linear |= flags; + tiled |= flags; } if (info->render_target <= gen) { - linear |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT; - tiled |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT; + flags = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | + VK_FORMAT_FEATURE_BLIT_DESTINATION_BIT; + linear |= flags; + tiled |= flags; } if (info->alpha_blend <= gen) { linear |= VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT; @@ -292,6 +301,7 @@ anv_physical_device_get_format_properties(struct anv_physical_device *physical_d out_properties->linearTilingFeatures = linear; out_properties->optimalTilingFeatures = tiled; + out_properties->bufferFeatures = 0; /* FINISHME */ return VK_SUCCESS;