[Mesa-dev] [PATCH] winsys/radeon: use zero sized buffers for fences if the kernel supports it

Marek Olšák maraeo at gmail.com
Thu Aug 7 08:46:36 PDT 2014


On Thu, Aug 7, 2014 at 4:31 PM, Christian König <deathsimple at vodafone.de> wrote:
> From: Christian König <christian.koenig at amd.com>
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
>  src/gallium/auxiliary/pipebuffer/pb_buffer.h  | 2 +-
>  src/gallium/winsys/radeon/drm/radeon_drm_bo.c | 2 +-
>  src/gallium/winsys/radeon/drm/radeon_drm_cs.c | 3 ++-
>  3 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/auxiliary/pipebuffer/pb_buffer.h b/src/gallium/auxiliary/pipebuffer/pb_buffer.h
> index 03bdce3..531f05e 100644
> --- a/src/gallium/auxiliary/pipebuffer/pb_buffer.h
> +++ b/src/gallium/auxiliary/pipebuffer/pb_buffer.h
> @@ -196,7 +196,7 @@ pb_get_base_buffer( struct pb_buffer *buf,
>     assert(buf->vtbl->get_base_buffer);
>     buf->vtbl->get_base_buffer(buf, base_buf, offset);
>     assert(*base_buf);
> -   assert(*offset < (*base_buf)->size);
> +   assert(*offset < (*base_buf)->size || !(*base_buf)->size);
>  }
>
>
> diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
> index 73f8d38..6361879 100644
> --- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
> +++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
> @@ -532,7 +532,7 @@ static struct pb_buffer *radeon_bomgr_create_bo(struct pb_manager *_mgr,
>      bo->initial_domain = rdesc->initial_domains;
>      pipe_mutex_init(bo->map_mutex);
>
> -    if (mgr->va) {
> +    if (mgr->va && size) {
>          struct drm_radeon_gem_va va;
>
>          bo->va = radeon_bomgr_find_va(mgr, size, desc->alignment);
> diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> index a06ecb2..faf99e9 100644
> --- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> +++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> @@ -602,10 +602,11 @@ static struct pipe_fence_handle *
>  radeon_cs_create_fence(struct radeon_winsys_cs *rcs)
>  {
>      struct radeon_drm_cs *cs = radeon_drm_cs(rcs);
> +    unsigned size = cs->ws->info.drm_minor >= 40 ? 0 : 1;

This should be ">= 41".

With that fixed:

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

>      struct pb_buffer *fence;
>
>      /* Create a fence, which is a dummy BO. */
> -    fence = cs->ws->base.buffer_create(&cs->ws->base, 1, 1, TRUE,
> +    fence = cs->ws->base.buffer_create(&cs->ws->base, size, 0, TRUE,
>                                         RADEON_DOMAIN_GTT, 0);
>      /* Add the fence as a dummy relocation. */
>      cs->ws->base.cs_add_reloc(rcs, cs->ws->base.buffer_get_cs_handle(fence),
> --
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list