On Mon, 2009-01-12 at 09:47 -0800, Younes Manton wrote:
> On Mon, Jan 12, 2009 at 5:04 AM, Keith Whitwell <kei...@vmware.com> wrote:
> >
> >
> > On Sun, 2009-01-11 at 23:00 -0800, Ben Skeggs wrote:
> >> Module: Mesa
> >> Branch: gallium-0.2
> >> Commit: df266471b1f0eae54cf23fd59a741fa3be9b93df
> >> URL:    
> >> http://cgit.freedesktop.org/mesa/mesa/commit/?id=df266471b1f0eae54cf23fd59a741fa3be9b93df
> >>
> >> Author: Ben Skeggs <skeg...@gmail.com>
> >> Date:   Mon Jan 12 13:27:13 2009 +1000
> >>
> >> nouveau: return buffer map to something sane.
> >>
> >> Sorry, but no, we're not doing this..  Correctness always takes precedence
> >> over speed.  Implement this higher up where you know it's safe to do so,
> >> and doesn't break other things in the process.
> >
> > Agreed,
> >
> > This is a general facility that makes sense to add at the gallium API
> > level -- there's nothing hardware-specific about this idea, so
> > implementing it within a driver or winsys is putting it at the wrong
> > level.
> >
> > I'd be happy to see a patch that adds something similar at the API
> > level, eg an extra flag to map() like _DISCARD or similar.
> >
> > Keith
> 
> I don't see how you can implement that functionality (nicely) at a
> higher level because there's no way to know if the mapping of a buffer
> will block or not.

The higher level just passes down an additional flag which allows the
backend to legally make the decision.

> The current alternative at a higher level than the winsys is to
> recreate *every* write-only pipe_buffer that we touch in the state
> tracker and block+retry later on out-of-memory if we're allocating
> faster than the GPU is consuming. This is what jrfonseca suggested
> when I brought up the possibility of adding flags and/or offset+len
> params to map(), and he pointed me to
> src/gallium/winsys/drm/intel/common/ws_dri_*.c and
> src/gallium/auxiliary/pipebuffer/*. I've tried that in various ways
> and it's a lot more code than the above and is overkill in cases where
> buffers are not actually busy and can be mapped immediately because
> we're rendering faster than we're mapping.

I wasn't intending to suggest that.

> I'd be happy with a DISCARD flag and/or offset+len params to map, to
> allow the above to be done safely. (But that still means implementing
> it in each winsys even though its not hardware specific, but it is
> winsys and pipe_buffer implementation specific -- in this case it
> relies on the nouveau BO that backs each pipe_buffer. I don't see how
> a state tracker calling winsys->map() on a pipe_buffer could hit
> generic code with the current setup.)

This is what I was trying to say - sorry for the confusion.  The winsys
will do the work, but only when told it's ok by a higher level.

Keith


------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to