<div dir="ltr"><div>So this series is back in the review process. Only the last 4 patches need an Rb and it's good to go.<br><br></div>Marek<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 27, 2018 at 4:29 PM, Nicolai Hähnle <span dir="ltr"><<a href="mailto:nhaehnle@gmail.com" target="_blank">nhaehnle@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 27.04.2018 19:21, Gurchetan Singh wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
On Fri, Apr 27, 2018 at 2:00 AM, Nicolai Hähnle <<a href="mailto:nhaehnle@gmail.com" target="_blank">nhaehnle@gmail.com</a>> wrote:<br>
</span><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
That was the whole point of the USER_STRIDE business. There are two<br>
alternatives I can see:<br>
<br>
1. Change minigbm so that it always maps the entire texture regardless of<br>
what the caller requests. This is a very simple fix, but it has the downside<br>
that the driver will always blit the entire surface to staging even if only<br>
a single pixel is needed. That can obviously bite us for performance and<br>
power, which is why I didn't want to go down that route.<br>
</blockquote>
<br>
The DRI backend maps the entire texture currently:<br>
<br>
<a href="https://chromium.googlesource.com/chromiumos/platform/minigbm/+/master/dri.c#266" rel="noreferrer" target="_blank">https://chromium.googlesource.<wbr>com/chromiumos/platform/minigb<wbr>m/+/master/dri.c#266</a><br>
<br>
This is consistent with what other drivers do as well, since GEM<br>
ioctls (i.e, DRM_IOCTL_I915_GEM_MMAP_GTT) don't support partial<br>
mappings.  I assume the AMD map ioctl also maps the entire buffer, but<br>
the shadow buffer is smaller.<br>
</span></blockquote>
<br>
I assume that those other drivers don't have to copy pixels as part of their map / unmap, so for them mapping the entire texture is okay, since there is no performance/power difference either way.<br>
<br>
We do have to actually copy pixels during map / unmap, so mapping the entire texture is a no-go if we're not actually going to use it all.<span class=""><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2. Instead of having a USER_STRIDE interface, just simplify the story to<br>
saying that whenever a transfer allocates a staging texture, it should<br>
allocate a texture sized for the entire texture, but perform blits only for<br>
the region that the user has requested.<br>
This ends up being the same thing in the end, but perhaps it's better as an<br>
interface because it's more explicit about what's happening.<br>
<br>
By the way: the fact that gralloc wants to *cache* mappings will also cause<br>
us pain, but that's perhaps something we should really just change in<br>
gralloc.<br>
</blockquote>
<br>
We modified minigbm to not cache mappings for AMD devices<br>
(<a href="http://crrev.com/c/990892" rel="noreferrer" target="_blank">crrev.com/c/990892</a>).<br>
</blockquote>
<br></span>
Yes, I see now, thanks for that.<br>
<br>
Cheers,<br>
Nicolai<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Cheers,<br>
Nicolai<br>
<br>
--<br>
Lerne, wie die Welt wirklich ist,<br>
Aber vergiss niemals, wie sie sein sollte.<br>
</blockquote></blockquote>
<br>
<br>
-- <br>
Lerne, wie die Welt wirklich ist,<br>
Aber vergiss niemals, wie sie sein sollte.<br>
</div></div></blockquote></div><br></div>