aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker/st_cb_flush.c
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'mesa_7_5_branch'Brian Paul2009-07-301-0/+12
|\
| * mesa/st: short-circuit glFinish calls on WIN32 onlyKeith Whitwell2009-07-291-0/+12
| | | | | | | | | | | | | | | | | | | | 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.
* | st: added st_renderbuffer::defined flagBrian Paul2009-05-011-1/+10
|/ | | | | | | | | | 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.
* mesa/st: protect internal flushes with FLUSH_CURRENTKeith Whitwell2009-04-281-1/+1
| | | | Already doing this for driver.flush()
* mesa/st: add check for null front renderbufferKeith Whitwell2009-03-131-9/+12
| | | | | | 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.
* mesa/st: don't call finish in st_glFlush()Keith Whitwell2009-03-131-4/+7
| | | | | | | | | 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.
* gallium: make p_winsys internalZack Rusin2009-01-301-5/+5
| | | | | move it to pipe/internal/p_winsys_screen.h and start converting the state trackers to the screen usage
* gallium: avoid mapping same vertex buffer in subsequent framesKeith Whitwell2008-12-121-1/+10
| | | | | | | | | | | 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.
* mesa: Don't call fence_finish with a null fence.José Fonseca2008-11-241-2/+4
|
* mesa: Issue PIPE_FLUSH_FRAME in glSwapBuffers/glFlush/glFinish.José Fonseca2008-08-151-1/+1
|
* gallium: don't set buffer status to undefined in display_front_buffer()Brian Paul2008-04-221-0/+2
|
* gallium: more elaborate tracking of front color buffer stateBrian Paul2008-04-091-23/+4
| | | | | | | 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.
* gallium: more flush/finish changesBrian Paul2008-04-091-30/+40
| | | | New, separate is_front_buffer_dirty() function.
* gallium: reorder funcsBrian Paul2008-04-091-11/+12
|
* gallium: call_flush_front_buffer() from st_glFinish()Brian Paul2008-04-091-0/+2
|
* gallium: fold st_gl_flush() into st_glFlush()Brian Paul2008-04-091-12/+5
|
* gallium: refactor code, new flush_front_buffer() functionBrian Paul2008-04-091-17/+25
|
* gallium: add new call to st_flush_bitmap_cache() to fix recent regressionBrian Paul2008-04-041-0/+2
|
* gallium: Revert st_gl_flush() changes from when the **fence argument was added.Michel Dänzer2008-04-041-1/+10
| | | | | As st_gl_flush() isn't used by st_finish() anymore, it doesn't have to make sure pipe->flush() always gets called.
* gallium: Call st_flush() instead of st_gl_flush() in st_finish().Michel Dänzer2008-04-041-1/+1
| | | | | This is enough for the current purpose of st_finish(), which is to wait for things to settle down before context teardown.
* gallium: Fencing fix.Michel Dänzer2008-04-011-1/+1
| | | | | | 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.
* gallium: implement a glBitmap cacheBrian2008-03-281-0/+3
| | | | | | | 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.
* gallium: Change pipe->flush() interface to optionally return a fence.Michel Dänzer2008-03-261-15/+19
| | | | | The cell driver still uses an internal CELL_FLUSH_WAIT flag, in the long run proper fencing should be implemented for it.
* gallium: specialize glFlush vs other flush semanticsKeith Whitwell2008-01-261-12/+32
|
* gallium: make state tracker explictly ask for rendercache flushesKeith Whitwell2007-12-201-2/+2
|
* Rename struct field 'private' to 'priv'.Michel Dänzer2007-11-081-1/+1
| | | | This broke the LLVM build because 'private' is a C++ keyword.
* New PIPE_FLUSH_WAIT flag for pipe->flush().Brian2007-11-071-7/+4
| | | | | The state tracker doesn't have to directly call winsys->wait_idle() anymore. glFlush and glFinish both go through pipe->flush() now.
* Remove context dependencies in winsys layer.Brian2007-11-071-2/+3
| | | | | | 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...
* added check for fb==NULLBrian2007-11-051-1/+3
|
* include context.hBrian2007-11-051-0/+1
|
* call FLUSH_VERTICES() in st_flush()Brian2007-11-051-0/+2
|
* public st_flush()Brian2007-11-051-10/+23
|
* Start re-working SwapBuffers.Brian2007-11-011-1/+6
| | | | | | | | 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...
* Lift common winsys functions into pipe's new p_winsys.Keith Whitwell2007-08-101-2/+3
|
* Handle glFlush/glFinish through the state tracker.Keith Whitwell2007-08-101-0/+81