R-b. Wonder why this never broke anything else either.
On Mon, Sep 16, 2019 at 11:36:54AM +0200, Boris Brezillon wrote: > We don't know who else is using the BO in that case, and thus shouldn't > re-use it for something else. > > Signed-off-by: Boris Brezillon <boris.brezil...@collabora.com> > --- > src/gallium/drivers/panfrost/pan_bo.c | 5 +++++ > src/gallium/drivers/panfrost/pan_bo.h | 4 ++++ > 2 files changed, 9 insertions(+) > > diff --git a/src/gallium/drivers/panfrost/pan_bo.c > b/src/gallium/drivers/panfrost/pan_bo.c > index 5d0f296cc4fb..209d1e0d71e5 100644 > --- a/src/gallium/drivers/panfrost/pan_bo.c > +++ b/src/gallium/drivers/panfrost/pan_bo.c > @@ -182,6 +182,9 @@ panfrost_bo_cache_put(struct panfrost_bo *bo) > { > struct panfrost_screen *screen = bo->screen; > > + if (bo->flags & PAN_BO_DONT_REUSE) > + return false; > + > pthread_mutex_lock(&screen->bo_cache_lock); > struct list_head *bucket = pan_bucket(screen, bo->size); > struct drm_panfrost_madvise madv; > @@ -352,6 +355,7 @@ panfrost_bo_import(struct panfrost_screen *screen, int fd) > bo->gem_handle = gem_handle; > bo->gpu = (mali_ptr) get_bo_offset.offset; > bo->size = lseek(fd, 0, SEEK_END); > + bo->flags |= PAN_BO_DONT_REUSE; > assert(bo->size > 0); > pipe_reference_init(&bo->reference, 1); > > @@ -372,6 +376,7 @@ panfrost_bo_export(struct panfrost_bo *bo) > if (ret == -1) > return -1; > > + bo->flags |= PAN_BO_DONT_REUSE; > return args.fd; > } > > diff --git a/src/gallium/drivers/panfrost/pan_bo.h > b/src/gallium/drivers/panfrost/pan_bo.h > index 2858d3782eff..33fbddff3369 100644 > --- a/src/gallium/drivers/panfrost/pan_bo.h > +++ b/src/gallium/drivers/panfrost/pan_bo.h > @@ -52,6 +52,10 @@ struct panfrost_screen; > * (semantically distinct from INVISIBLE, which cannot never be mmaped) */ > #define PAN_BO_DELAY_MMAP (1 << 4) > > +/* Some BOs shouldn't be returned back to the reuse BO cache, use this flag > to > + * let the BO logic know about this contraint. */ > +#define PAN_BO_DONT_REUSE (1 << 5) > + > struct panfrost_bo { > /* Must be first for casting */ > struct list_head link; > -- > 2.21.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev