summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olv@lunarg.com>2010-03-10 22:20:15 +0800
committerChia-I Wu <olv@lunarg.com>2010-03-10 22:21:08 +0800
commite4848d21e8f384f4157076d5e7c7c9d38da6598e (patch)
tree1d2efb8bf99741578a03e64876e1e1a93891d9e8
parent9b348d0ed125a22be3f318ac60cef6f201edfdab (diff)
gallium: Do not mix winsys-drawable-handle and context-private.
update_buffer should be called with context-private, not winsys-drawable-handle.
-rw-r--r--src/gallium/include/pipe/p_screen.h5
-rw-r--r--src/gallium/state_trackers/vega/vg_tracker.c10
-rw-r--r--src/mesa/state_tracker/st_cb_flush.c2
-rw-r--r--src/mesa/state_tracker/st_context.c2
-rw-r--r--src/mesa/state_tracker/st_context.h1
5 files changed, 8 insertions, 12 deletions
diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h
index 690455f722..b771bfe85e 100644
--- a/src/gallium/include/pipe/p_screen.h
+++ b/src/gallium/include/pipe/p_screen.h
@@ -265,6 +265,7 @@ struct pipe_screen {
/**
* Do any special operations to ensure buffer size is correct
+ * \param context_private the private data of the calling context
*/
void (*update_buffer)( struct pipe_screen *ws,
void *context_private );
@@ -272,10 +273,12 @@ struct pipe_screen {
/**
* Do any special operations to ensure frontbuffer contents are
* displayed, eg copy fake frontbuffer.
+ * \param winsys_drawable_handle an opaque handle that the calling context
+ * gets out-of-band
*/
void (*flush_frontbuffer)( struct pipe_screen *screen,
struct pipe_surface *surf,
- void *context_private );
+ void *winsys_drawable_handle );
diff --git a/src/gallium/state_trackers/vega/vg_tracker.c b/src/gallium/state_trackers/vega/vg_tracker.c
index a002e50faf..ea5c2ce41f 100644
--- a/src/gallium/state_trackers/vega/vg_tracker.c
+++ b/src/gallium/state_trackers/vega/vg_tracker.c
@@ -380,16 +380,8 @@ boolean st_make_current(struct vg_context *st,
void *winsys_drawable_handle)
{
vg_set_current_context(st);
- if (st) {
+ if (st)
st->draw_buffer = draw;
-
- /* VG state tracker doesn't seem to do front-buffer rendering
- * (no calls to flush_frontbuffer). If it ever did start doing
- * that, it would need to pass this value down in the
- * flush_frontbuffer call:
- */
- st->pipe->priv = winsys_drawable_handle;
- }
return VG_TRUE;
}
diff --git a/src/mesa/state_tracker/st_cb_flush.c b/src/mesa/state_tracker/st_cb_flush.c
index 1329f807bc..28a384ba49 100644
--- a/src/mesa/state_tracker/st_cb_flush.c
+++ b/src/mesa/state_tracker/st_cb_flush.c
@@ -79,7 +79,7 @@ display_front_buffer(struct st_context *st)
/* Hook for copying "fake" frontbuffer if necessary:
*/
st->pipe->screen->flush_frontbuffer( st->pipe->screen, front_surf,
- st->pipe->priv );
+ st->winsys_drawable_handle );
/*
st->frontbuffer_status = FRONT_STATUS_UNDEFINED;
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 09f891d691..ca6d4dfb06 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -287,7 +287,7 @@ st_make_current(struct st_context *st,
}
_mesa_check_init_viewport(st->ctx, draw->InitWidth, draw->InitHeight);
- st->pipe->priv = winsys_drawable_handle;
+ st->winsys_drawable_handle = winsys_drawable_handle;
return GL_TRUE;
}
diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h
index 6622361a7e..e2d34fb3d1 100644
--- a/src/mesa/state_tracker/st_context.h
+++ b/src/mesa/state_tracker/st_context.h
@@ -185,6 +185,7 @@ struct st_context
struct cso_context *cso_context;
int force_msaa;
+ void *winsys_drawable_handle;
};