<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 28, 2017 at 4:23 PM, Frediano Ziglio <span dir="ltr"><<a href="mailto:fziglio@redhat.com" target="_blank">fziglio@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">><br>
> Increased size of allocation to reduce number of allocation per<br>
> bitmap. Before change the procedure ignored 'alloc_size' parameter<br>
> and always allocated memory chunk according to 'size' parameter.<br>
> As a result, first chunk could be up to 64K and all following are<br>
> limited by line size. For example, for bitmap 1280x1024 there was<br>
> more than 1008 chunks allocated, for bitmap 128x1024 - 897 chunks.<br>
> We change the procedure to use chunk size up to 64K (similar to first<br>
> chunk). This reduces in described examples number of allocation from<br>
> 1008 to 64 and 897 to 8 respectively.<br>
><br>
> Signed-off-by: Yuri Benditovich <<a href="mailto:yuri.benditovich@daynix.com">yuri.benditovich@daynix.com</a>><br>
> ---<br>
>  qxldod/QxlDod.cpp | 2 +-<br>
>  1 file changed, 1 insertion(+), 1 deletion(-)<br>
><br>
> diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp<br>
> index 56a4cf2..94426dd 100755<br>
> --- a/qxldod/QxlDod.cpp<br>
> +++ b/qxldod/QxlDod.cpp<br>
> @@ -4586,7 +4586,7 @@ BOOLEAN QxlDevice::PutBytesAlign(<wbr>QXLDataChunk<br>
> **chunk_ptr, UINT8 **now_ptr,<br>
>      UINT8 *now = *now_ptr;<br>
>      UINT8 *end = *end_ptr;<br>
>      size_t maxAllocSize = BITS_BUF_MAX - BITS_BUF_MAX % size;<br>
> -    alloc_size = MIN(size, maxAllocSize);<br>
> +    alloc_size = MIN(alloc_size, maxAllocSize);<br>
>      DbgPrint(TRACE_LEVEL_VERBOSE, ("---> %s\n", __FUNCTION__));<br>
><br>
>      while (size) {<br>
<br>
</div></div>As far as I can see this fix a regression introduced in 9/12 so<br>
should be squashed together with 9/12.<br></blockquote><div><br></div><div>There was no regression in 9/12, see commit description</div><div>This patch forces the driver to make bigger allocations and in result we will have smaller amount of allocations per operation.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
On the same subject. Why we need to split the allocations?<br>
Can't we try to allocate the whole image in one chunk and<br>
only if fails fall back to multiple chunks ?<br></blockquote><div><br></div><div>No, we can't do that, as maximal size of allocation from device memory in driver's code was always limited by ~64K.</div><div>So allocation were always splitted, see numbers in commit description.</div><div>I suppose there is some reason for that.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
Frediano<br>
</font></span></blockquote></div><br></div></div>