st_api: Give get_egl_image arguments directly to the function

This commit is contained in:
Jakob Borncrantz
2010-05-21 23:25:45 +01:00
committed by Jakob Bornecrantz
parent ffd2bc3dfb
commit 4db0c76019
4 changed files with 27 additions and 18 deletions
+13 -5
View File
@@ -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.
@@ -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)
@@ -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);
+1 -3
View File
@@ -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,