summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Ekstrand <jason@jlekstrand.net>2020-02-12 10:22:39 -0600
committerMarge Bot <eric+marge@anholt.net>2020-02-13 15:40:18 +0000
commit3a2977e7b5ccead8a3a0e3d7df7823325c64b90b (patch)
tree4948c47b9cd9329aa7f8d10963da9942e03ee570
parent5a593bec16b1e5830bc57462abc0b056342ac876 (diff)
anv: Reject modifiers on depth/stencil formats
6790397346cc added code which attempts to reject modifiers on depth/stencil formats but it was placed after the early return for depth and stencil aspects. This commit moves it up so it actually works. Of course, this doesn't actually matter because the only user of any of the modifiers stuff is the WSI code and it will never do anything with depth/stencil. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3794> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3794>
-rw-r--r--src/intel/vulkan/anv_formats.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c
index caf409ea9f3..b5962f13d6c 100644
--- a/src/intel/vulkan/anv_formats.c
+++ b/src/intel/vulkan/anv_formats.c
@@ -459,6 +459,13 @@ anv_get_format_plane(const struct gen_device_info *devinfo, VkFormat vk_format,
if (aspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) {
assert(vk_format_aspects(vk_format) &
(VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT));
+
+ /* There's no reason why we strictly can't support depth or stencil with
+ * modifiers but there's also no reason why we should.
+ */
+ if (tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT)
+ return unsupported;
+
return plane_format;
}
@@ -480,9 +487,6 @@ anv_get_format_plane(const struct gen_device_info *devinfo, VkFormat vk_format,
if (!util_is_power_of_two_or_zero(isl_layout->bpb))
return unsupported;
- if (vk_format_is_depth_or_stencil(vk_format))
- return unsupported;
-
if (isl_format_is_compressed(plane_format.isl_format))
return unsupported;
}