diff options
author | Chad Versace <[email protected]> | 2015-10-07 10:15:59 -0700 |
---|---|---|
committer | Chad Versace <[email protected]> | 2015-10-07 10:15:59 -0700 |
commit | 98c2bb69172944e909922f00422bd235b8e543cc (patch) | |
tree | 5360801f46d558394f21a91e187b2875a268e9bb | |
parent | 545f5cc6e1202ebf1777f63d25741e64e3699a97 (diff) |
vk/0.170.2: Update VkFormatProperties
-rw-r--r-- | include/vulkan/vulkan.h | 4 | ||||
-rw-r--r-- | 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; |