It's a very rare application that can render half a frame to one sized framebuffer and the other half to another and expect to have a meaningful result.
It's also incredibly difficult to write a driver that produces any sensible result when the render-target size changes halfway through a frame. There are a bunch of reasons for this, including the fact that the driver will have unflushed command buffers referring to the old size that are suddenly invalid when a new size materializes. Basically one of the best things we ever did was stop checking the DRI1 sarea for window size changes except at swapbuffer and makecurrent times. Being able to resize windows without seeing mangled/garbage frames in the middle was a huge step forwards. My pet take on this is that we should go one step further and modify GLX semantics to allow a stretch blit on swapbuffers to scale the rendered image up/down to the new window size. There is no possible way to make sure that the driver always produces a frame that matches the new window size (as it may change in the middle of a frame, etc), this seems like by far the nicest approach from a users perspective. It disregards an aspect of the GLX spec - I'm interested to hear if anyone can figure out a way to square that circle... Keith ________________________________________ From: Michel Dänzer [mic...@daenzer.net] Sent: Friday, January 22, 2010 4:11 AM To: Francisco Jerez Cc: mesa3d-dev@lists.sourceforge.net Subject: Re: [Mesa3d-dev] [mesa patch 1/3] dri2: Event driven buffer validation. > > When the invalidate event is available, IMO the buffers should also only > > be invalidated after a buffer swap / front buffer flush, not 'in the > > middle of a frame'. > > > Event-driven applications want the new buffers immediately after getting > the resize event, otherwise they could try to draw outside the bounds of > the old buffers, and that rendering would be lost. I still don't see any benefit to changing the buffers while the app is rendering a frame, but I guess the problem is that the DRI2 code in libGL doesn't know if that's the case or not... ------------------------------------------------------------------------------ Throughout its 18-year history, RSA Conference consistently attracts the world's best and brightest in the field, creating opportunities for Conference attendees to learn about information security's most important issues through interactions with peers, luminaries and emerging and established companies. http://p.sf.net/sfu/rsaconf-dev2dev _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev