summaryrefslogtreecommitdiff
path: root/src/intel/vulkan
diff options
context:
space:
mode:
Diffstat (limited to 'src/intel/vulkan')
-rw-r--r--src/intel/vulkan/anv_formats.c4
-rw-r--r--src/intel/vulkan/anv_image.c1
2 files changed, 4 insertions, 1 deletions
diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c
index 0f6a85a26ef..1ed87b84106 100644
--- a/src/intel/vulkan/anv_formats.c
+++ b/src/intel/vulkan/anv_formats.c
@@ -756,8 +756,10 @@ anv_get_image_format_features(const struct gen_device_info *devinfo,
}
}
- if (anv_format->n_planes > 1)
+ if (anv_format->n_planes > 1 &&
+ !anv_is_y_plane_and_uv_plane_same_memory(anv_format->vk_format)) {
flags |= VK_FORMAT_FEATURE_DISJOINT_BIT;
+ }
/* Almost all YCbCr formats either have multiple planes, are subsampled,
* or have weird bit-pattern usages (e.g., Y412). There are a couple
diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index 07ddda53e3b..642d33aff15 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -979,6 +979,7 @@ anv_image_create(VkDevice _device,
* with the VK_IMAGE_CREATE_DISJOINT_BIT bit set.
*/
image->disjoint = image->format->n_planes > 1 &&
+ !anv_is_y_plane_and_uv_plane_same_memory(image->vk_format) &&
(pCreateInfo->flags & VK_IMAGE_CREATE_DISJOINT_BIT);
const isl_tiling_flags_t isl_tiling_flags =