diff options
author | Chia-I Wu <[email protected]> | 2010-11-11 00:09:09 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2010-11-18 11:56:00 +0800 |
commit | 4f38dcd97410d0a58be19cb5c6dfbee51a3b7561 (patch) | |
tree | db18999003614640abd495f67a3f27a068d0619c | |
parent | 28105471afce634df6c35ef14b198fe6e3684c00 (diff) |
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.
-rw-r--r-- | src/gallium/include/state_tracker/st_api.h | 6 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_manager.c | 23 |
2 files changed, 28 insertions, 1 deletions
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 @@ -349,6 +349,12 @@ struct st_context_iface 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. * * This function is optional. 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 @@ -611,6 +611,26 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target } 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) { struct st_context *st = (struct st_context *) 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; |