<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Feb 27, 2017 at 5:38 PM, Jason Ekstrand <span dir="ltr"><<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5">On Mon, Feb 27, 2017 at 4:56 PM, Ben Widawsky <span dir="ltr"><<a href="mailto:ben@bwidawsk.net" target="_blank">ben@bwidawsk.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="m_-4938128676035748584HOEnZb"><div class="m_-4938128676035748584h5">On 17-01-31 13:24:55, Jason Ekstrand wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Mon, Jan 23, 2017 at 10:21 PM, Ben Widawsky <<a href="mailto:ben@bwidawsk.net" target="_blank">ben@bwidawsk.net</a>> wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
v2: Put the commit message as a comment (Topi)<br>
<br>
Cc: Topi Pohjolainen <<a href="mailto:topi.pohjolainen@gmail.com" target="_blank">topi.pohjolainen@gmail.com</a>><br>
Cc: Ville Syrjälä <<a href="mailto:ville.syrjala@linux.intel.com" target="_blank">ville.syrjala@linux.intel.com</a><wbr>><br>
Cc: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>><br>
Signed-off-by: Ben Widawsky <<a href="mailto:ben@bwidawsk.net" target="_blank">ben@bwidawsk.net</a>><br>
Acked-by: Daniel Stone <<a href="mailto:daniels@collabora.com" target="_blank">daniels@collabora.com</a>><br>
---<br>
 src/mesa/drivers/dri/i965/int<wbr>el_screen.c | 5 ++++-<br>
 1 file changed, 4 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/in<wbr>tel_screen.c<br>
b/src/mesa/drivers/dri/i965/in<wbr>tel_screen.c<br>
index 85070bb54d..12b3b071e4 100644<br>
--- a/src/mesa/drivers/dri/i965/in<wbr>tel_screen.c<br>
+++ b/src/mesa/drivers/dri/i965/in<wbr>tel_screen.c<br>
@@ -1023,7 +1023,10 @@ intel_from_planar(__DRIimage *parent, int plane,<br>
void *loaderPrivate)<br>
     if (parent == NULL || parent->planar_format == NULL) {<br>
        if (is_aux) {<br>
           offset = parent->aux_offset;<br>
-          stride = ALIGN(parent->pitch / 32, 128);<br>
+          /* Make CCS stride match kernel's expectations. Mesa's internals<br>
+           * expect: stride = ALIGN(parent->pitch / 32, 128)<br>
+           */<br>
+          stride = ALIGN(parent->pitch / 64, 128);<br>
<br>
</blockquote></blockquote></div></div></blockquote></div></div></div></div></div></blockquote><div><br></div><div>I just realized that this doesn't match the picture you drew in 22/32 where the CCS and the main color surface have the same stride.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="m_-4938128676035748584HOEnZb"><div class="m_-4938128676035748584h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Does the kernel expect the alignment to be 128 or 64?  Given that ville<br>
likes 64-wide tiles, I think it should be 64.  Really, I think the more<br>
accurate calculation would be<br>
<br>
stride = ALIGN(parent->pitch, 4096) / 64;<br></blockquote></div></div></blockquote></div></div></div></div></div></blockquote><div><br></div><div>Isn't the actual CCS stride stored in parent->strides[0]?  Why are we re-computing it from the plane 0 pitch?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="m_-4938128676035748584HOEnZb"><div class="m_-4938128676035748584h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
4096 is the stride in bytes in the primary surface required to cross a<br>
single CCS tile.  The calculation you have above will work in the sense<br>
that the worst that happens is for it to align up a bit too far.  In any<br>
case, what matters is that we a) have enough space and b) exactly match the<br>
kernel's calculation.<br>
<br>
--Jason<br>
<br>
<br>
</blockquote>
<br></div></div>
This formula doesn't match the kernel's expectations (unless Ville has updated<br>
patches somewhere).<br></blockquote><div><br></div></div></div><div>Hrm... Ok.  Having the alignment too big won't break anything, it's just a bit odd.<br></div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If you want I can do:<br>
stride = ALIGN(parent->pitch, 4096) / 128;</blockquote><div><br></div></span><div> That' wouldn't match either.  Let's make sure the formulas match exactly.<br></div></div><br></div></div>
</blockquote></div><br></div></div>