From e4848d21e8f384f4157076d5e7c7c9d38da6598e Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Wed, 10 Mar 2010 22:20:15 +0800 Subject: [PATCH] gallium: Do not mix winsys-drawable-handle and context-private. update_buffer should be called with context-private, not winsys-drawable-handle. --- src/gallium/include/pipe/p_screen.h | 5 ++++- src/gallium/state_trackers/vega/vg_tracker.c | 10 +--------- src/mesa/state_tracker/st_cb_flush.c | 2 +- src/mesa/state_tracker/st_context.c | 2 +- src/mesa/state_tracker/st_context.h | 1 + 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 690455f7222..b771bfe85ec 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 a002e50faf7..ea5c2ce41f6 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 1329f807bc9..28a384ba49b 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 09f891d691a..ca6d4dfb069 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 6622361a7e3..e2d34fb3d10 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; }; -- 2.11.0