intel/isl: Disable some gen10 CCS_E formats for now

CannonLake additionally supports R11G11B10_FLOAT and four 10-10-10-2
formats with CCS_E. None of these formats fit within the current
blorp_copy framework so disable them until support is added.

Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Nanley Chery 2017-08-23 10:51:28 -07:00
parent 3ba973fe37
commit c7baaafe54

View file

@ -536,6 +536,30 @@ isl_format_supports_ccs_e(const struct gen_device_info *devinfo,
if (!format_info[format].exists)
return false;
/* For simplicity, only report that a format supports CCS_E if blorp can
* perform bit-for-bit copies with an image of that format while compressed.
* This allows ISL users to avoid having to resolve the image before
* performing such a copy. We may want to change this behavior in the
* future.
*
* R11G11B10_FLOAT has no equivalent UINT format. Given how blorp_copy
* currently works, bit-for-bit copy operations are not possible without an
* intermediate resolve.
*/
if (format == ISL_FORMAT_R11G11B10_FLOAT)
return false;
/* blorp_copy currently doesn't support formats with different bit-widths
* per-channel. Until that support is added, report that these formats don't
* support CCS_E. FIXME: Add support for these formats.
*/
if (format == ISL_FORMAT_B10G10R10A2_UNORM ||
format == ISL_FORMAT_B10G10R10A2_UNORM_SRGB ||
format == ISL_FORMAT_R10G10B10A2_UNORM ||
format == ISL_FORMAT_R10G10B10A2_UINT) {
return false;
}
return format_gen(devinfo) >= format_info[format].ccs_e;
}