Hmm, so if this is driver-specific, what driver interactions are
provoked by adding the FLUSH_CURRENT?  

How does your driver know that anything different has happened
with/without this change?

Keith  

On Wed, 2009-12-16 at 12:32 -0800, Maarten Maathuis wrote:
> With the help of scons i actually managed to build a softpipe and came
> to the conclusion this is working fine too. This is really odd.
> 
> Maarten.
> 
> On Wed, Dec 16, 2009 at 8:01 PM, Maarten Maathuis <madman2...@gmail.com> 
> wrote:
> > did a realclean and got softpipe to build, but it still doesn't work.
> >
> > warzone2100: swrast/s_span.c:1477: _swrast_write_rgba_span: Assertion
> > `rb->_BaseFormat == 0x1908 || rb->_BaseFormat == 0x1907' failed.
> >
> > On Wed, Dec 16, 2009 at 7:20 PM, Maarten Maathuis <madman2...@gmail.com> 
> > wrote:
> >> On Sat, Dec 12, 2009 at 11:21 PM, Maarten Maathuis <madman2...@gmail.com> 
> >> wrote:
> >>> On Sat, Dec 12, 2009 at 8:03 PM, Keith Whitwell <kei...@vmware.com> wrote:
> >>>> Maarten,
> >>>>
> >>>> Interesting.  There are reasons this might be happening indeed, but 
> >>>> first can I ask a couple of silly questions...
> >>>>
> >>>>  - Is your bug only on one particular gallium driver, or does eg. 
> >>>> softpipe show the same symptoms?
> >>>>  - What about non-gallium drivers? eg. Mesa swrast?
> >>>
> >>> That's not silly at all. I could not get softpipe to work (glxinfo:
> >>> symbol lookup error: /ts/git/mesa-softpipe/lib/libGL.so.1: undefined
> >>> symbol: glAreTexturesResidentEXT), i did get swrast to work. And this
> >>> didn't have the problem.
> >>>
> >>>>
> >>>> Keith
> >>>> ________________________________________
> >>>> From: Maarten Maathuis [madman2...@gmail.com]
> >>>> Sent: Friday, December 11, 2009 4:41 PM
> >>>> To: Keith Whitwell
> >>>> Cc: mesa3d-dev@lists.sourceforge.net
> >>>> Subject: Re: [Mesa3d-dev] [gallium] what is wrong when i need 
> >>>> FLUSH_CURRENT in  st_teximage_flush_before_map()
> >>>>
> >>>> On Tue, Dec 8, 2009 at 7:21 PM, Maarten Maathuis <madman2...@gmail.com> 
> >>>> wrote:
> >>>>> It was TexSubImage, and i added FLUSH_CURRENT after
> >>>>> ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH and it seems to fix the issue. The
> >>>>> difference between the two is that one triggers on NeedFlush &
> >>>>> FLUSH_UPDATE_CURRENT and the other on NeedFlush &
> >>>>> FLUSH_STORED_VERTICES. Any idea what the problem is?
> >>>>>
> >>>>> Maarten.
> >>>>>
> >>>>> On Tue, Dec 8, 2009 at 3:36 PM, Keith Whitwell <kei...@vmware.com> 
> >>>>> wrote:
> >>>>>> On Fri, 2009-12-04 at 13:51 -0800, Maarten Maathuis wrote:
> >>>>>>> I recently noticed a regression in the nv50 gallium driver, with a few
> >>>>>>> hours of bisecting i figured out i need FLUSH_CURRENT called
> >>>>>>> unconditionally in st_teximage_flush_before_map(). Otherwise in
> >>>>>>> warzone2100 several small textures (glyphs) go missing. Does this make
> >>>>>>> any sense or perhaps provide a hint as to the real problem. One other
> >>>>>>> person has tried and could not reproduce this issue. I've tried doing
> >>>>>>> a 100 msec wait instead and gpu flush (FLUSH_FRAME to be precise) +
> >>>>>>> 100 msec wait. Neither work, which leads me to believe something is
> >>>>>>> still stuck in the state tracker.
> >>>>>>
> >>>>>> Maarten,
> >>>>>>
> >>>>>> FLUSH_CURRENT really just flushes internal Mesa state, rather than 
> >>>>>> doing
> >>>>>> anything to the GPU or driver.  In particular it will:
> >>>>>>
> >>>>>>  - Make sure the VBO module issues any pending draw commands
> >>>>>>  - Asks the VBO module to update ctx->Current.Attrib[]
> >>>>>>  - Similarly for ctx->Light.MatAttrib[]
> >>>>>>  - And provokes the unmapping of the in-progress immediate VBO.
> >>>>>>
> >>>>>> Most of this is also done by ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(), 
> >>>>>> which
> >>>>>> is being called at the top of _mesa_TexImage2D().
> >>>>>>
> >>>>>> So it's a surprise that calling FLUSH_CURRENT has any effect, as it
> >>>>>> really just updates a few mesa internal values once ASSERT_OUTSIDE...()
> >>>>>> has been called.
> >>>>>>
> >>>>>> What would happen if you lifted your FLUSH_CURRENT up into the highest
> >>>>>> mesa function on the callstack?
> >>>>>>
> >>>>>> Keith
> >>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>> This is the smallest change i could find that would work.
> >>>>
> >>>> diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c
> >>>> index f0a7eea..f45761e 100644
> >>>> --- a/src/mesa/vbo/vbo_exec_api.c
> >>>> +++ b/src/mesa/vbo/vbo_exec_api.c
> >>>> @@ -370,6 +370,8 @@ do {                                                 
> >>>>                \
> >>>>       if (N>3) dest[3] = V3;                                   \
> >>>>    }                                                           \
> >>>>                                                                \
> >>>> +   exec->ctx->Driver.NeedFlush |= FLUSH_STORED_VERTICES;       \
> >>>> +                                                               \
> >>>>    if ((A) == 0) {                                             \
> >>>>       GLuint i;                                                        \
> >>>>                                                                \
> >>>> @@ -377,7 +379,6 @@ do {                                                 
> >>>>                \
> >>>>         exec->vtx.buffer_ptr[i] = exec->vtx.vertex[i];         \
> >>>>                                                                \
> >>>>       exec->vtx.buffer_ptr += exec->vtx.vertex_size;                   \
> >>>> -      exec->ctx->Driver.NeedFlush |= FLUSH_STORED_VERTICES;    \
> >>>>                                                                \
> >>>>       if (++exec->vtx.vert_count >= exec->vtx.max_vert)                \
> >>>>         vbo_exec_vtx_wrap( exec );                             \
> >>>>
> >>>
> >>
> >> Any ideas? This time mesa with only softpipe doesn't even build (what
> >> do you use to build softpipe?):
> >>
> >> gcc -I../../include -g -O2 -Wall -Wmissing-prototypes -std=c99
> >> -ffast-math -fno-strict-aliasing -g  -fPIC   -D_GNU_SOURCE -DPTHREADS
> >> -DDEBUG -DHAVE_POSIX_MEMALIGN -DUSE_XSHM  arbfplight.c readtex.o
> >> -L../../lib -lglut -lGLEW -lGLU -lGL  -lm -o arbfplight
> >> ../../lib/libGL.so: undefined reference to `gl_dispatch_stub_361'
> >> ../../lib/libGL.so: undefined reference to `gl_dispatch_stub_356'
> >> ../../lib/libGL.so: undefined reference to `gl_dispatch_stub_366'
> >> ../../lib/libGL.so: undefined reference to `glDeleteTexturesEXT'
> >> ../../lib/libGL.so: undefined reference to `glGetColorTableParameterfvEXT'
> >> ../../lib/libGL.so: undefined reference to `gl_dispatch_stub_362'
> >> ../../lib/libGL.so: undefined reference to `gl_dispatch_stub_357'
> >> ../../lib/libGL.so: undefined reference to `glGenTexturesEXT'
> >> ../../lib/libGL.so: undefined reference to `gl_dispatch_stub_363'
> >> ../../lib/libGL.so: undefined reference to `gl_dispatch_stub_358'
> >> ../../lib/libGL.so: undefined reference to `gl_dispatch_stub_364'
> >> ../../lib/libGL.so: undefined reference to `glIsTextureEXT'
> >> ../../lib/libGL.so: undefined reference to `gl_dispatch_stub_359'
> >> ../../lib/libGL.so: undefined reference to `glAreTexturesResidentEXT'
> >> ../../lib/libGL.so: undefined reference to `gl_dispatch_stub_365'
> >> ../../lib/libGL.so: undefined reference to `glGetColorTableEXT'
> >> ../../lib/libGL.so: undefined reference to `glGetColorTableParameterivEXT'
> >>
> >



------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to