[Spice-devel] [PATCH 10/12] qxl-wddm-dod: Optimize allocation of memory chunks

Frediano Ziglio fziglio at redhat.com
Tue Mar 28 13:23:14 UTC 2017


> 
> Increased size of allocation to reduce number of allocation per
> bitmap. Before change the procedure ignored 'alloc_size' parameter
> and always allocated memory chunk according to 'size' parameter.
> As a result, first chunk could be up to 64K and all following are
> limited by line size. For example, for bitmap 1280x1024 there was
> more than 1008 chunks allocated, for bitmap 128x1024 - 897 chunks.
> We change the procedure to use chunk size up to 64K (similar to first
> chunk). This reduces in described examples number of allocation from
> 1008 to 64 and 897 to 8 respectively.
> 
> Signed-off-by: Yuri Benditovich <yuri.benditovich at daynix.com>
> ---
>  qxldod/QxlDod.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp
> index 56a4cf2..94426dd 100755
> --- a/qxldod/QxlDod.cpp
> +++ b/qxldod/QxlDod.cpp
> @@ -4586,7 +4586,7 @@ BOOLEAN QxlDevice::PutBytesAlign(QXLDataChunk
> **chunk_ptr, UINT8 **now_ptr,
>      UINT8 *now = *now_ptr;
>      UINT8 *end = *end_ptr;
>      size_t maxAllocSize = BITS_BUF_MAX - BITS_BUF_MAX % size;
> -    alloc_size = MIN(size, maxAllocSize);
> +    alloc_size = MIN(alloc_size, maxAllocSize);
>      DbgPrint(TRACE_LEVEL_VERBOSE, ("---> %s\n", __FUNCTION__));
>  
>      while (size) {

As far as I can see this fix a regression introduced in 9/12 so
should be squashed together with 9/12.

On the same subject. Why we need to split the allocations?
Can't we try to allocate the whole image in one chunk and
only if fails fall back to multiple chunks ?

Frediano


More information about the Spice-devel mailing list