[Mesa-dev] [PATCH] winsys/radeon: loosen up the requirements for how much memory IBs can use

Michel Dänzer michel at daenzer.net
Tue Aug 4 00:12:26 PDT 2015


On 03.08.2015 21:43, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> ---
>  src/gallium/winsys/radeon/drm/radeon_drm_cs.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> index 45eef29..7e5fff4 100644
> --- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> +++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> @@ -379,11 +379,16 @@ static boolean radeon_drm_cs_validate(struct radeon_winsys_cs *rcs)
>  static boolean radeon_drm_cs_memory_below_limit(struct radeon_winsys_cs *rcs, uint64_t vram, uint64_t gtt)
>  {
>      struct radeon_drm_cs *cs = radeon_drm_cs(rcs);
> -    boolean status =
> -        (cs->csc->used_gart + gtt) < cs->ws->info.gart_size * 0.7 &&
> -        (cs->csc->used_vram + vram) < cs->ws->info.vram_size * 0.7;
>  
> -    return status;
> +    vram += cs->csc->used_vram;
> +    gtt += cs->csc->used_gart;
> +
> +    /* Anything that goes above the VRAM size should go to GTT. */
> +    if (vram > cs->ws->info.vram_size)
> +        gtt += vram - cs->ws->info.vram_size;
> +
> +    /* Now we just need to check if we have enough GTT. */
> +    return gtt < cs->ws->info.gart_size * 0.7;
>  }

While you're at it: I suspect the final multiplication converts
cs->ws->info.gart_size to a double, multiplies by 0.7 as a double and
then converts back to integer. Something like

    return gtt < (cs->ws->info.gart_size - cs->ws->info.gart_size / 4);

should be more efficient.


Either way though,

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the mesa-dev mailing list