summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_cb_flush.c
AgeCommit message (Collapse)Author
2010-02-18Revert "st/mesa: Make the frontbuffer visible on st_flush(PIPE_FLUSH_FRAME)."Francisco Jerez
We probably don't want to propagate this condition to the pipe driver, this reverts commit f455ca6490fcb65781b21f81c7117bd923e250d1 and the dri_update_buffer flush altogether until an agreement is reached.
2010-02-18st/mesa: always call FLUSH_CURRENT before st->pipe->flush()Keith Whitwell
Undoes part of commit f455ca6 which would permit pipe->flush() to be called while the VBO module still had its buffers mapped. Some drivers care deeply about this. Sorry for not spotting this earlier.
2010-02-17st/mesa: Make the frontbuffer visible on st_flush(PIPE_FLUSH_FRAME).Francisco Jerez
So far the frontbuffer was only being flushed on st_glFlush and st_glFinish, however, a co-state tracker may need to make sure that any frontbuffer changes are already on its way to the actual front. The dri2 state tracker will need this for event-driven GL applications to resize properly (It could also be done calling "dri_flush_frontbuffer", but that way we would flush unnecessarily in the double-buffered case). Additionally this patch avoids flushing the mesa rendering cache if PIPE_FLUSH_RENDER_CACHE wasn't specified.
2009-07-30Merge branch 'mesa_7_5_branch'Brian Paul
2009-07-29mesa/st: short-circuit glFinish calls on WIN32 onlyKeith Whitwell
Windows opengl32.dll calls glFinish prior to every swapbuffers, which makes it pretty hard to get decent performance... Work around by mapping finish to flush on PIPE_OS_WINDOWS. This is conformant, though it might confuse poorly-written benchmarks which attempt to measure a single event rather than figuring out the rate of continuous processing.
2009-05-01st: added st_renderbuffer::defined flagBrian Paul
Indicates whether there's defined image contents, or garbage/don't care. This is set when we draw into a renderbuffer and cleared when we resize/ reallocate a renderbuffer or do a buffer swap (back buffer becomes undefined). We use this to determine whether the front color buffer has been drawn to, and whether to display its contents upon glFlush/Finish(), when the new st_swapbuffers() function is used.
2009-04-28mesa/st: protect internal flushes with FLUSH_CURRENTKeith Whitwell
Already doing this for driver.flush()
2009-03-13mesa/st: add check for null front renderbufferKeith Whitwell
Not sure if this indicates a problem elsewhere, but without this check trivial/tri-fbo.c segfaults on resize. With the patch, it renders correctly.
2009-03-13mesa/st: don't call finish in st_glFlush()Keith Whitwell
It is not the state tracker's responsibilty to inject sleeps and pessimize performance in the hope of avoiding buffer synchronization issues in buggy drivers. Calling finish() here will just hide problems that need to be fixed elsewhere.
2009-01-30gallium: make p_winsys internalZack Rusin
move it to pipe/internal/p_winsys_screen.h and start converting the state trackers to the screen usage
2008-12-12gallium: avoid mapping same vertex buffer in subsequent framesKeith Whitwell
Quite a few util modules were maintaining a single vertex buffer over multiple frames, and potentially reusing it in subsequent frames. Unfortunately that would force us into syncrhonous rendering as the buffer manager would be forced to wait for the previous rendering to complete prior to allowing the map. This resolves that issue, but requires the state tracker to issue a few new flush() calls at the end of each frame.
2008-11-24mesa: Don't call fence_finish with a null fence.José Fonseca
2008-08-15mesa: Issue PIPE_FLUSH_FRAME in glSwapBuffers/glFlush/glFinish.José Fonseca
2008-04-22gallium: don't set buffer status to undefined in display_front_buffer()Brian Paul
2008-04-09gallium: more elaborate tracking of front color buffer stateBrian Paul
This fixes the case where the app calls SwapBuffers then calls glReadPixels to read the front color buffer. We now keep track of when the front buffer is a _logically_ copy of the back buffer (after SwapBuffers) and read from the back color buffer instead of the front.
2008-04-09gallium: more flush/finish changesBrian Paul
New, separate is_front_buffer_dirty() function.
2008-04-09gallium: reorder funcsBrian Paul
2008-04-09gallium: call_flush_front_buffer() from st_glFinish()Brian Paul
2008-04-09gallium: fold st_gl_flush() into st_glFlush()Brian Paul
2008-04-09gallium: refactor code, new flush_front_buffer() functionBrian Paul
2008-04-04gallium: add new call to st_flush_bitmap_cache() to fix recent regressionBrian Paul
2008-04-04gallium: Revert st_gl_flush() changes from when the **fence argument was added.Michel Dänzer
As st_gl_flush() isn't used by st_finish() anymore, it doesn't have to make sure pipe->flush() always gets called.
2008-04-04gallium: Call st_flush() instead of st_gl_flush() in st_finish().Michel Dänzer
This is enough for the current purpose of st_finish(), which is to wait for things to settle down before context teardown.
2008-04-01gallium: Fencing fix.Michel Dänzer
Make sure the struct pipe_fence_handle* we point st_flush() to is initialized to NULL, so winsys->fence_reference() doesn't try to unreference a random struct pipe_fence_handle* pointer.
2008-03-28gallium: implement a glBitmap cacheBrian
The bitmap cache attempts to accumulate a series of glBitmap calls in a buffer to effectively render a whole bunch of bitmaps at once. The cache can be disabled, if needed, by setting UseBitmapCache=GL_FALSE.
2008-03-26gallium: Change pipe->flush() interface to optionally return a fence.Michel Dänzer
The cell driver still uses an internal CELL_FLUSH_WAIT flag, in the long run proper fencing should be implemented for it.
2008-01-26gallium: specialize glFlush vs other flush semanticsKeith Whitwell
2007-12-20gallium: make state tracker explictly ask for rendercache flushesKeith Whitwell
2007-11-08Rename struct field 'private' to 'priv'.Michel Dänzer
This broke the LLVM build because 'private' is a C++ keyword.
2007-11-07New PIPE_FLUSH_WAIT flag for pipe->flush().Brian
The state tracker doesn't have to directly call winsys->wait_idle() anymore. glFlush and glFinish both go through pipe->flush() now.
2007-11-07Remove context dependencies in winsys layer.Brian
The winsys object is now per-screen and shared by multiple contexts. The regionPool is now part of the i915 winsys layer. The winsys wait_idle() and flush_frontbuffer() funcs will get more attention...
2007-11-05added check for fb==NULLBrian
2007-11-05include context.hBrian
2007-11-05call FLUSH_VERTICES() in st_flush()Brian
2007-11-05public st_flush()Brian
2007-11-01Start re-working SwapBuffers.Brian
intelCopyBuffer() is now intelDisplayBuffer(): it displays the given surface in the on-screen window. Added a pipe_surface parameter to winsys->flush_frontbuffer(). Front buffer rendering/flushing actually works now. But, we should only allocate the front surface on demand...
2007-08-10Lift common winsys functions into pipe's new p_winsys.Keith Whitwell
2007-08-10Handle glFlush/glFinish through the state tracker.Keith Whitwell