[Mesa-dev] [PATCH] winsys/svga: Replace the query mm buffer pool with a slab pool v3
Brian Paul
brianp at vmware.com
Wed Apr 2 07:41:31 PDT 2014
On 04/01/2014 11:50 PM, Thomas Hellstrom wrote:
> This is to avoid running out of query buffer space due to winsys
> limitations. Instead of a fixed size per screen pool of query buffers,
> use a slab allocator that allocates a new slab if we run out of space
> in the first one.
>
> v2: Correct email addresses.
> v3: s/8192/VMW_QUERY_POOL_SIZE/. Improve documentation and log message.
>
> Reported-and-tested-by: Brian Paul <brianp at vmware.com>
> Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
> Cc: "10.1" <mesa-stable at lists.freedesktop.org>
> ---
> src/gallium/winsys/svga/drm/vmw_screen_pools.c | 18 +++++++++++++-----
> 1 file changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/src/gallium/winsys/svga/drm/vmw_screen_pools.c b/src/gallium/winsys/svga/drm/vmw_screen_pools.c
> index c97b71f..50d2a81 100644
> --- a/src/gallium/winsys/svga/drm/vmw_screen_pools.c
> +++ b/src/gallium/winsys/svga/drm/vmw_screen_pools.c
> @@ -76,15 +76,23 @@ vmw_pools_cleanup(struct vmw_winsys_screen *vws)
> *
> * Typically this pool should be created on demand when we
> * detect that the app will be using queries. There's nothing
> - * special with this pool other than the backing kernel buffer size,
> - * which is limited to 8192.
> + * special with this pool other than the backing kernel buffer sizes,
> + * which are limited to 8192.
> + * If there is a performance issue with allocation and freeing of the
> + * query slabs, it should be easily fixable by allocating them out
> + * of a buffer cache.
> */
> boolean
> vmw_query_pools_init(struct vmw_winsys_screen *vws)
> {
> - vws->pools.query_mm = mm_bufmgr_create(vws->pools.gmr,
> - VMW_QUERY_POOL_SIZE,
> - 3 /* 8 alignment */);
> + struct pb_desc desc;
> +
> + desc.alignment = 16;
> + desc.usage = ~(VMW_BUFFER_USAGE_SHARED | VMW_BUFFER_USAGE_SYNC);
> +
> + vws->pools.query_mm = pb_slab_range_manager_create(vws->pools.gmr, 16, 128,
> + VMW_QUERY_POOL_SIZE,
> + &desc);
> if (!vws->pools.query_mm)
> return FALSE;
>
>
Reviewed-by: Brian Paul <brianp at vmware.com>
More information about the mesa-dev
mailing list