<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Apr 30, 2018 at 3:11 PM, Eric Anholt <span dir="ltr"><<a href="mailto:eric@anholt.net" target="_blank">eric@anholt.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Marek Olšák <<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>> writes:<br>
<br>
> From: Nicolai Hähnle <<a href="mailto:nicolai.haehnle@amd.com">nicolai.haehnle@amd.com</a>><br>
><br>
> Allow the caller to specify the row stride (in bytes) with which an image<br>
> should be mapped. Note that completely ignoring USER_STRIDE is a valid<br>
> implementation of mapImage.<br>
><br>
> This is horrible API design. Unfortunately, cros_gralloc does indeed have<br>
> a horrible API design -- in that arbitrary images should be allowed to be<br>
> mapped with the stride that a linear image of the same width would have.<br>
><br>
> There is no separate capability bit because it's unclear how stricter<br>
> requirements should be defined.<br>
<br>
</span>I think that this is a bad interface, and you should just push an extra<br>
copy into the caller so that they're encouraged to fix their bad API<br>
instead of pushing their mistake down into Mesa ABI that we get stuck<br>
with forever.<br>
</blockquote></div><br></div><div class="gmail_extra">I agree that it's a very bad interface. I would also like cros_gralloc not to do silly things. I don't know what kind of hardware gralloc is designed around - it's certainly not designed around modern GPUs, that part is clear. The emulation of the user-specified stride increases memory usage (especially if the stride is larger than necessary), so it's a bad idea by definition. I don't know if it's still possible to change gralloc not to use it.<br><br>The reason the feature is pushed into the driver is that only the driver can efficiently force a certain stride where the stride is much larger than box.width*bpp of the mapping, and still only tile/detile box.width*bpp.<br><br></div><div class="gmail_extra">Marek<br></div></div>