From: Chia-I Wu Date: Wed, 10 Nov 2010 16:09:09 +0000 (+0800) Subject: gallium: Add st_context_iface::share to st_api. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4f38dcd97410d0a58be19cb5c6dfbee51a3b7561;p=mesa.git gallium: Add st_context_iface::share to st_api. It will be used to implement wglShareLists. Fill st_context_iface::copy for glXCopyContext as well. --- diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h index c73a53db330..565a09614a4 100644 --- a/src/gallium/include/state_tracker/st_api.h +++ b/src/gallium/include/state_tracker/st_api.h @@ -348,6 +348,12 @@ struct st_context_iface void (*copy)(struct st_context_iface *stctxi, struct st_context_iface *stsrci, unsigned mask); + /** + * Used to implement wglShareLists. + */ + boolean (*share)(struct st_context_iface *stctxi, + struct st_context_iface *stsrci); + /** * Look up and return the info of a resource for EGLImage. * diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index 35b59de5a06..15e7b8921c3 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -610,6 +610,26 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target return TRUE; } +static void +st_context_copy(struct st_context_iface *stctxi, + struct st_context_iface *stsrci, unsigned mask) +{ + struct st_context *st = (struct st_context *) stctxi; + struct st_context *src = (struct st_context *) stsrci; + + _mesa_copy_context(src->ctx, st->ctx, mask); +} + +static boolean +st_context_share(struct st_context_iface *stctxi, + struct st_context_iface *stsrci) +{ + struct st_context *st = (struct st_context *) stctxi; + struct st_context *src = (struct st_context *) stsrci; + + return _mesa_share_state(st->ctx, src->ctx); +} + static void st_context_destroy(struct st_context_iface *stctxi) { @@ -677,7 +697,8 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi, st_context_notify_invalid_framebuffer; st->iface.flush = st_context_flush; st->iface.teximage = st_context_teximage; - st->iface.copy = NULL; + st->iface.copy = st_context_copy; + st->iface.share = st_context_share; st->iface.st_context_private = (void *) smapi; return &st->iface;