summaryrefslogtreecommitdiff
path: root/src/mesa/pipe
diff options
context:
space:
mode:
authorBrian <brian.paul@tungstengraphics.com>2007-11-01 18:37:00 -0600
committerBrian <brian.paul@tungstengraphics.com>2007-11-01 18:37:00 -0600
commitd8e66aca8443c6802ecd8f1a353024ed1d0f32c3 (patch)
treec0038761beedea1e4854981c2fbfb7a6942ce722 /src/mesa/pipe
parent28bed6d355e7ea3acbc4dbef0490e269d560f89e (diff)
Start re-working SwapBuffers.
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...
Diffstat (limited to 'src/mesa/pipe')
-rw-r--r--src/mesa/pipe/p_winsys.h4
-rw-r--r--src/mesa/pipe/xlib/xm_winsys.c14
2 files changed, 10 insertions, 8 deletions
diff --git a/src/mesa/pipe/p_winsys.h b/src/mesa/pipe/p_winsys.h
index 10a2caf1a2..2d4432dbca 100644
--- a/src/mesa/pipe/p_winsys.h
+++ b/src/mesa/pipe/p_winsys.h
@@ -53,6 +53,7 @@ struct pipe_buffer_handle;
struct pipe_region;
+struct pipe_surface;
/** Opaque type */
struct pipe_buffer_handle;
@@ -63,7 +64,8 @@ struct pipe_winsys
* Do any special operations to ensure frontbuffer contents are
* displayed, eg copy fake frontbuffer.
*/
- void (*flush_frontbuffer)( struct pipe_winsys *sws );
+ void (*flush_frontbuffer)( struct pipe_winsys *sws,
+ struct pipe_surface *surf );
/** Debug output */
void (*printf)( struct pipe_winsys *sws,
diff --git a/src/mesa/pipe/xlib/xm_winsys.c b/src/mesa/pipe/xlib/xm_winsys.c
index e6e98ed396..5de811a66f 100644
--- a/src/mesa/pipe/xlib/xm_winsys.c
+++ b/src/mesa/pipe/xlib/xm_winsys.c
@@ -157,14 +157,14 @@ xm_buffer_get_subdata(struct pipe_winsys *pws, struct pipe_buffer_handle *buf,
}
static void
-xm_flush_frontbuffer(struct pipe_winsys *pws)
+xm_flush_frontbuffer(struct pipe_winsys *pws,
+ struct pipe_surface *surf )
{
- /*
- struct intel_context *intel = intel_pipe_winsys(sws)->intel;
- __DRIdrawablePrivate *dPriv = intel->driDrawable;
-
- intelCopyBuffer(dPriv, NULL);
- */
+ /* The Xlib driver's front color surfaces are actually X Windows so
+ * this flush is a no-op.
+ * If we instead did front buffer rendering to a temporary XImage,
+ * this would be the place to copy the Ximage to the on-screen Window.
+ */
}
static void