[Mesa-dev] [PATCH 2/2] pb_bufmgr_cache: add is_buffer_busy hook and use it instead of non-blocking map

José Fonseca jfonseca at vmware.com
Mon Feb 14 09:47:01 PST 2011


On Sun, 2011-02-13 at 23:58 -0800, Dave Airlie wrote:
> >>    if(buf->base.base.size < size)
> >>       return 0;
> >>
> >> @@ -242,13 +240,10 @@ pb_cache_is_buffer_compat(struct pb_cache_buffer
> >> *buf,
> >>    if(!pb_check_usage(desc->usage, buf->base.base.usage))
> >>       return 0;
> >>
> >> -   map = pb_map(buf->buffer, PB_USAGE_DONTBLOCK, NULL);
> >> -   if (!map) {
> >> -      return -1;
> >> -   }
> >> +   if (buf->mgr->base.is_buffer_busy)
> >> +      if (buf->mgr->base.is_buffer_busy(&buf->mgr->base, buf->buffer))
> >> +         return -1;
> >
> > Oops, this is wrong. I will locally replace any occurences of
> > "buf->mgr->base(.)" with "buf->mgr->provider(->)", which is how it was meant
> > to be, but the idea remains the same. Please review.

Marek, I don't understand what you want to do here: you removed the
pb_map, but you left the pb_unmap, and what will happen if
is_buffer_busy is not defined?

> 
> I actually suggested this originally, but Jose I think preferred using
> the dontblock to the buffer mapping.

I'd prefer that there is one way of doing this, but I didn't/don't feel
strong about this. IMO, having two ways, PB_USAGE_DONTBLOCK and
is_buffer_busy, is not cleaner that just PB_USAGE_DONTBLOCK, even if
is_buffer_busy is conceptually cleaner.

Marek, Would adding an inline function, pb_is_buffer_busy, that calls
pb_map(PB_USAGE_DONTBLOCK)+pb_unmap inside work for you?

Another way, would be to add is_buffer_busy and have the default
implementation to do pb_map/pb_unmap.

Jose





More information about the mesa-dev mailing list