[Intel-gfx] [PATCH] i965: use nonblocking maps MapRangeBuffer

Ben Widawsky ben at bwidawsk.net
Fri Sep 23 21:21:43 CEST 2011


On Fri, 23 Sep 2011 11:56:59 -0700
Ben Widawsky <ben at bwidawsk.net> wrote:

> On Fri, 23 Sep 2011 11:46:41 -0700
> Ben Widawsky <ben at bwidawsk.net> wrote:
> 
> > On Fri, 23 Sep 2011 10:15:02 -0700
> > Eric Anholt <eric at anholt.net> wrote:
> > 
> > > On Thu, 22 Sep 2011 16:27:12 -0700, Ben Widawsky
> > > <ben at bwidawsk.net> wrote:
> > > > This makes the code a lot cleaner, and theoretically faster (not
> > > > many real world tests use this GL extension).
> > > > 
> > > > Cc: Eric Anholt <eric at anholt.net>
> > > > Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> > > > Cc: Mesa Devs <mesa-dev at lists.freedesktop.org>
> > > > Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> > > > ---
> > > >  src/mesa/drivers/dri/intel/intel_buffer_objects.c |   48
> > > > ++------------------ 1 files changed, 5 insertions(+), 43
> > > > deletions(-)
> > > > 
> > > > diff --git a/src/mesa/drivers/dri/intel/intel_buffer_objects.c
> > > > b/src/mesa/drivers/dri/intel/intel_buffer_objects.c index
> > > > d35a50e..91dddce 100644 ---
> > > > a/src/mesa/drivers/dri/intel/intel_buffer_objects.c +++
> > > > b/src/mesa/drivers/dri/intel/intel_buffer_objects.c @@ -296,8
> > > > +296,6 @@ intel_bufferobj_get_subdata(struct gl_context * ctx, }
> > > >  }
> > > >  
> > > > -
> > > > -
> > > >  /**
> > > >   * Called via glMapBufferRange and glMapBuffer
> > > >   *
> > > > @@ -363,50 +361,14 @@ intel_bufferobj_map_range(struct
> > > > gl_context
> > > > * ctx, return NULL;
> > > >     }
> > > >  
> > > > -   /* If the user doesn't care about existing buffer contents
> > > > and mapping
> > > > -    * would cause us to block, then throw out the old buffer.
> > > > -    */
> > > > -   if (!(access & GL_MAP_UNSYNCHRONIZED_BIT) &&
> > > > -       (access & GL_MAP_INVALIDATE_BUFFER_BIT) &&
> > > > -       drm_intel_bo_busy(intel_obj->buffer)) {
> > > > -      drm_intel_bo_unreference(intel_obj->buffer);
> > > > -      intel_bufferobj_alloc_buffer(intel, intel_obj);
> > > > -   }
> > > 
> > > Why did you delete this code?  Applications rely on this
> > > happening.
> > 
> > Maybe I got confused by the order of operations, but I thought this
> > should be,
> > If synchronized and invalidate and busy, just create a new buffer.
> > This *should* be handled correctly by the nonblocking call below.
> > Maybe I'm mistaken.
> 
> Sorry, want to clarify this some more:
> 
> So we no longer ever create a new buffer to try to speed things up. I
> was hoping the nonblocking stuff would fix this. Actually this patch
> was sort of my attempt to remove as much as possible and see what
> you'd say. If you already know which cases REALLY need the new
> buffeobj, I'll add those back.
> 
> Ben

Forget this, let me resubmit.



More information about the Intel-gfx mailing list