diff --git a/src/gallium/frontends/dri/dri_screen.c b/src/gallium/frontends/dri/dri_screen.c index 8198dde4cd2..7866ee0fdb3 100644 --- a/src/gallium/frontends/dri/dri_screen.c +++ b/src/gallium/frontends/dri/dri_screen.c @@ -460,6 +460,15 @@ dri_get_egl_image(struct st_manager *smapi, return TRUE; } +static bool +dri_validate_egl_image(struct st_manager *smapi, + void *egl_image) +{ + struct dri_screen *screen = (struct dri_screen *)smapi; + + return screen->validate_egl_image(screen, egl_image); +} + static int dri_get_param(struct st_manager *smapi, enum st_manager_param param) @@ -546,6 +555,9 @@ dri_init_screen_helper(struct dri_screen *screen, screen->base.get_param = dri_get_param; screen->base.set_background_context = dri_set_background_context; + if (screen->validate_egl_image) + screen->base.validate_egl_image = dri_validate_egl_image; + screen->st_api = st_gl_api_create(); if (!screen->st_api) return NULL; diff --git a/src/gallium/include/frontend/api.h b/src/gallium/include/frontend/api.h index 16f0ff18189..4fa1256f07a 100644 --- a/src/gallium/include/frontend/api.h +++ b/src/gallium/include/frontend/api.h @@ -473,6 +473,12 @@ struct st_manager void *egl_image, struct st_egl_image *out); + /** + * Validate EGLImage passed to get_egl_image. + */ + bool (*validate_egl_image)(struct st_manager *smapi, + void *egl_image); + /** * Query an manager param. */