<div dir="ltr"><div>Thanks for doing this in isl_format_supports_ccs_e instead of changing the table!<br><br></div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 27, 2017 at 12:24 PM, Nanley Chery <span dir="ltr"><<a href="mailto:nanleychery@gmail.com" target="_blank">nanleychery@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">CannonLake additionally supports R11G11B10_FLOAT and four 10-10-10-2<br>
formats with CCS_E. None of these formats fit within the current<br>
blorp_copy framework so disable them until support is added.<br>
<br>
Signed-off-by: Nanley Chery <<a href="mailto:nanley.g.chery@intel.com">nanley.g.chery@intel.com</a>><br>
Cc: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
---<br>
<br>
Jason, do you think we modify blorp instead of moving forward with this<br>
patch? In any case, I've sent this to the list to add context to my next<br>
patch.<br>
<br>
 src/intel/isl/isl_format.c | 24 ++++++++++++++++++++++++<br>
 1 file changed, 24 insertions(+)<br>
<br>
diff --git a/src/intel/isl/isl_format.c b/src/intel/isl/isl_format.c<br>
index fba3ac5e1a..03c591071b 100644<br>
--- a/src/intel/isl/isl_format.c<br>
+++ b/src/intel/isl/isl_format.c<br>
@@ -536,6 +536,30 @@ isl_format_supports_ccs_e(<wbr>const struct gen_device_info *devinfo,<br>
    if (!format_info[format].exists)<br>
       return false;<br>
<br>
+   /* For simplicity, only report that a format supports CCS_E if blorp can<br>
+    * perform bit-for-bit copies with an image of that format while compressed.<br>
+    * This allows ISL users to avoid having to resolve the image before<br>
+    * performing such a copy. We may want to change this behavior in the<br>
+    * future.<br>
+    *<br>
+    * R11G11B10_FLOAT has no equivalent UINT format. Given how blorp_copy<br>
+    * currently works, bit-for-bit copy operations are not possible without an<br>
+    * intermediate resolve.<br>
+    */<br>
+   if (format == ISL_FORMAT_R11G11B10_FLOAT)<br>
+      return false;<br>
+<br>
+   /* blorp_copy currently doesn't support formats with different bit-widths<br>
+    * per-channel. Until that support is added, report that these formats don't<br>
+    * support CCS_E. FIXME: Add support for these formats.<br>
+    */<br>
+   if (format == ISL_FORMAT_B10G10R10A2_UNORM ||<br>
+       format == ISL_FORMAT_B10G10R10A2_UNORM_<wbr>SRGB ||<br>
+       format == ISL_FORMAT_R10G10B10A2_UNORM ||<br>
+       format == ISL_FORMAT_R10G10B10A2_UINT) {<br>
+      return false;<br>
+   }<br>
+<br>
    return format_gen(devinfo) >= format_info[format].ccs_e;<br>
 }<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
2.14.3<br>
<br>
</font></span></blockquote></div><br></div>