diff options
| author | Jakob Borncrantz <jakob@vmware.com> | 2010-05-21 23:25:45 +0100 | 
|---|---|---|
| committer | Jakob Bornecrantz <jakob@vmware.com> | 2010-05-21 23:29:05 +0100 | 
| commit | 4db0c760195c67f1bc114fdfb8464791030a526c (patch) | |
| tree | 7150261c8b1e9c2e80d8647a7abbf87c151c96cc | |
| parent | ffd2bc3dfbcccd3c38ff93ac107027a5a5764eb5 (diff) | |
st_api: Give get_egl_image arguments directly to the function
| -rw-r--r-- | src/gallium/include/state_tracker/st_api.h | 18 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri_screen.c | 8 | ||||
| -rw-r--r-- | src/gallium/state_trackers/egl/common/egl_g3d_st.c | 15 | ||||
| -rw-r--r-- | src/mesa/state_tracker/st_manager.c | 4 | 
4 files changed, 27 insertions, 18 deletions
| diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h index e7efbf065f..621bdae5c8 100644 --- a/src/gallium/include/state_tracker/st_api.h +++ b/src/gallium/include/state_tracker/st_api.h @@ -146,10 +146,6 @@ struct st_context_resource   */  struct st_egl_image  { -   /* these fields are filled by the caller */ -   struct st_context_iface *stctxi; -   void *egl_image; -     /* this is owned by the caller */     struct pipe_resource *texture; @@ -329,10 +325,22 @@ struct st_manager     /**      * Look up and return the info of an EGLImage.      * +    * This is used to implement for example EGLImageTargetTexture2DOES. +    * The GLeglImageOES agrument of that call is passed directly to this +    * function call and the information needed to access this is returned +    * in the given struct out. +    * +    * @smapi: manager owning the caller context +    * @stctx: caller context +    * @egl_image: EGLImage that caller recived +    * @out: return struct filled out with access information. +    *      * This function is optional.      */     boolean (*get_egl_image)(struct st_manager *smapi, -                            struct st_egl_image *stimg); +                            struct st_context_iface *stctx, +                            void *egl_image, +                            struct st_egl_image *out);     /**      * Query an manager param. diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c b/src/gallium/state_trackers/dri/common/dri_screen.c index 5decdb23b1..fa1a35deb3 100644 --- a/src/gallium/state_trackers/dri/common/dri_screen.c +++ b/src/gallium/state_trackers/dri/common/dri_screen.c @@ -314,15 +314,17 @@ dri_get_swap_info(__DRIdrawable * dPriv, __DRIswapInfo * sInfo)  static boolean  dri_get_egl_image(struct st_manager *smapi, -                             struct st_egl_image *stimg) +                  struct st_context_iface *stctxi, +                  void *egl_image, +                  struct st_egl_image *stimg)  {     struct dri_context *ctx = -      (struct dri_context *)stimg->stctxi->st_manager_private; +      (struct dri_context *)stctxi->st_manager_private;     struct dri_screen *screen = dri_screen(ctx->sPriv);     __DRIimage *img = NULL;     if (screen->lookup_egl_image) { -      img = screen->lookup_egl_image(ctx, stimg->egl_image); +      img = screen->lookup_egl_image(ctx, egl_image);     }     if (!img) diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_st.c b/src/gallium/state_trackers/egl/common/egl_g3d_st.c index 2d459d5a6c..cdf13140cb 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_st.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_st.c @@ -206,10 +206,11 @@ egl_g3d_destroy_st_apis(void)  static boolean  egl_g3d_st_manager_get_egl_image(struct st_manager *smapi, -                                 struct st_egl_image *stimg) +                                 void *egl_image, +                                 struct st_egl_image *out)  {     struct egl_g3d_st_manager *gsmapi = egl_g3d_st_manager(smapi); -   EGLImageKHR handle = (EGLImageKHR) stimg->egl_image; +   EGLImageKHR handle = (EGLImageKHR) egl_image;     _EGLImage *img;     struct egl_g3d_image *gimg; @@ -224,11 +225,11 @@ egl_g3d_st_manager_get_egl_image(struct st_manager *smapi,     gimg = egl_g3d_image(img); -   stimg->texture = NULL; -   pipe_resource_reference(&stimg->texture, gimg->texture); -   stimg->face = gimg->face; -   stimg->level = gimg->level; -   stimg->zslice = gimg->zslice; +   out->texture = NULL; +   pipe_resource_reference(&out->texture, gimg->texture); +   out->face = gimg->face; +   out->level = gimg->level; +   out->zslice = gimg->zslice;     _eglUnlockMutex(&gsmapi->display->Mutex); diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index d7523e4941..8c3dfb3f71 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -756,9 +756,7 @@ st_manager_get_egl_image_surface(struct st_context *st,        return NULL;     memset(&stimg, 0, sizeof(stimg)); -   stimg.stctxi = &st->iface; -   stimg.egl_image = eglimg; -   if (!smapi->get_egl_image(smapi, &stimg)) +   if (!smapi->get_egl_image(smapi, &st->iface, eglimg, &stimg))        return NULL;     ps = smapi->screen->get_tex_surface(smapi->screen, | 
