Mesa (master): st_api: Give get_egl_image arguments directly to the function

Jakob Bornecrantz wallbraker at kemper.freedesktop.org
Fri May 21 22:30:13 UTC 2010


Module: Mesa
Branch: master
Commit: 4db0c760195c67f1bc114fdfb8464791030a526c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4db0c760195c67f1bc114fdfb8464791030a526c

Author: Jakob Borncrantz <jakob at vmware.com>
Date:   Fri May 21 23:25:45 2010 +0100

st_api: Give get_egl_image arguments directly to the function

---

 src/gallium/include/state_tracker/st_api.h         |   18 +++++++++++++-----
 src/gallium/state_trackers/dri/common/dri_screen.c |    8 +++++---
 src/gallium/state_trackers/egl/common/egl_g3d_st.c |   15 ++++++++-------
 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 e7efbf0..621bdae 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 5decdb2..fa1a35d 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 2d459d5..cdf1314 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 d7523e4..8c3dfb3 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,




More information about the mesa-commit mailing list