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