From: Faith Ekstrand Date: Mon, 14 Aug 2023 21:36:18 +0000 (-0500) Subject: anv: Disable CCS_E for ISL_FORMAT_YCRCB_* X-Git-Tag: upstream/23.3.3~3314 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b9870275b12587a6a42620d2721600487859015d;p=platform%2Fupstream%2Fmesa.git anv: Disable CCS_E for ISL_FORMAT_YCRCB_* We're about to start using YCRCB_NORMAL and YCRCB_SWAPUV for 8-bit interleaved YCbCr and, while ISL claims CCS_E support, it's not well tested and we don't think it's working yet for all of ANV's use-cases. Disable it for now in ANV and only for YUV formats. Reviewed-by: Nanley Chery Part-of: --- diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c index 85c29d3..b4ba8e4 100644 --- a/src/intel/vulkan/anv_formats.c +++ b/src/intel/vulkan/anv_formats.c @@ -781,7 +781,7 @@ anv_get_image_format_features2(const struct anv_physical_device *physical_device } if (isl_drm_modifier_has_aux(isl_mod_info->modifier) && - !isl_format_supports_ccs_e(devinfo, plane_format.isl_format)) { + !anv_format_supports_ccs_e(devinfo, plane_format.isl_format)) { return 0; } diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index dff8157..cbdd090 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -442,7 +442,7 @@ formats_ccs_e_compatible(const struct intel_device_info *devinfo, VkImageUsageFlags vk_usage, const VkImageFormatListCreateInfo *fmt_list) { - if (!isl_format_supports_ccs_e(devinfo, format)) + if (!anv_format_supports_ccs_e(devinfo, format)) return false; /* For images created without MUTABLE_FORMAT_BIT set, we know that they will @@ -472,6 +472,19 @@ formats_ccs_e_compatible(const struct intel_device_info *devinfo, } bool +anv_format_supports_ccs_e(const struct intel_device_info *devinfo, + const enum isl_format format) +{ + /* CCS_E for YCRCB_NORMAL and YCRCB_SWAP_UV is not currently supported by + * ANV so leave it disabled for now. + */ + if (isl_format_is_yuv(format)) + return false; + + return isl_format_supports_ccs_e(devinfo, format); +} + +bool anv_formats_ccs_e_compatible(const struct intel_device_info *devinfo, VkImageCreateFlags create_flags, VkFormat vk_format, VkImageTiling vk_tiling, diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 0348b52..b9cc13f 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -3857,6 +3857,9 @@ anv_get_isl_format(const struct intel_device_info *devinfo, VkFormat vk_format, return anv_get_format_aspect(devinfo, vk_format, aspect, tiling).isl_format; } +bool anv_format_supports_ccs_e(const struct intel_device_info *devinfo, + const enum isl_format format); + bool anv_formats_ccs_e_compatible(const struct intel_device_info *devinfo, VkImageCreateFlags create_flags, VkFormat vk_format, VkImageTiling vk_tiling,