mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 03:48:06 +02:00
st/dri: Make lookup_egl_image a hook
This commit is contained in:
parent
0c572c6828
commit
ab12d4f647
4 changed files with 13 additions and 10 deletions
|
|
@ -41,6 +41,8 @@
|
|||
#include "state_tracker/st_api.h"
|
||||
#include "state_tracker/drm_api.h"
|
||||
|
||||
struct dri_context;
|
||||
|
||||
struct dri_screen
|
||||
{
|
||||
/* dri */
|
||||
|
|
@ -55,6 +57,9 @@ struct dri_screen
|
|||
int fd;
|
||||
drmLock *drmLock;
|
||||
|
||||
/* hooks filled in by dri1, dri2 & drisw */
|
||||
__DRIimage * (*lookup_egl_image)(struct dri_context *ctx, void *handle);
|
||||
|
||||
/* gallium */
|
||||
struct drm_api *api;
|
||||
struct pipe_winsys *pipe_winsys;
|
||||
|
|
|
|||
|
|
@ -229,15 +229,15 @@ static boolean
|
|||
dri_st_manager_get_egl_image(struct st_manager *smapi,
|
||||
struct st_egl_image *stimg)
|
||||
{
|
||||
struct dri_context *ctx =
|
||||
(struct dri_context *)stimg->stctxi->st_manager_private;
|
||||
struct dri_screen *screen = dri_screen(ctx->sPriv);
|
||||
__DRIimage *img = NULL;
|
||||
|
||||
#ifndef __NOT_HAVE_DRM_H
|
||||
if (!__dri1_api_hooks) {
|
||||
struct dri_context *ctx = (struct dri_context *)
|
||||
stimg->stctxi->st_manager_private;
|
||||
img = dri2_lookup_egl_image(ctx, stimg->egl_image);
|
||||
if (screen->lookup_egl_image) {
|
||||
img = screen->lookup_egl_image(ctx, stimg->egl_image);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!img)
|
||||
return FALSE;
|
||||
|
||||
|
|
|
|||
|
|
@ -373,7 +373,7 @@ dri2_flush_frontbuffer(struct dri_drawable *drawable,
|
|||
}
|
||||
}
|
||||
|
||||
__DRIimage *
|
||||
static __DRIimage *
|
||||
dri2_lookup_egl_image(struct dri_context *ctx, void *handle)
|
||||
{
|
||||
__DRIimageLookupExtension *loader = ctx->sPriv->dri2.image;
|
||||
|
|
@ -512,6 +512,7 @@ dri2_init_screen(__DRIscreen * sPriv)
|
|||
screen->api = drm_api_create();
|
||||
screen->sPriv = sPriv;
|
||||
screen->fd = sPriv->fd;
|
||||
screen->lookup_egl_image = dri2_lookup_egl_image;
|
||||
|
||||
sPriv->private = (void *)screen;
|
||||
sPriv->extensions = dri_screen_extensions;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,4 @@ dri2_allocate_textures(struct dri_drawable *drawable,
|
|||
const enum st_attachment_type *statts,
|
||||
unsigned count);
|
||||
|
||||
__DRIimage *
|
||||
dri2_lookup_egl_image(struct dri_context *ctx, void *handle);
|
||||
|
||||
#endif /* DRI2_H */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue