summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChad Versace <[email protected]>2015-10-07 10:15:59 -0700
committerChad Versace <[email protected]>2015-10-07 10:15:59 -0700
commit98c2bb69172944e909922f00422bd235b8e543cc (patch)
tree5360801f46d558394f21a91e187b2875a268e9bb
parent545f5cc6e1202ebf1777f63d25741e64e3699a97 (diff)
vk/0.170.2: Update VkFormatProperties
-rw-r--r--include/vulkan/vulkan.h4
-rw-r--r--src/vulkan/anv_formats.c18
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;