mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
gbm: wire up fence extension
v2: make fence extension optional to not break non-i965 classic
drivers, and move __DRI2_FENCE into core extensions, based
on comments from Emil
Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
32c061b110
commit
74b1969d71
4 changed files with 6 additions and 1 deletions
|
|
@ -644,6 +644,7 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
|
||||||
dri2_dpy->dri_screen = dri2_dpy->gbm_dri->screen;
|
dri2_dpy->dri_screen = dri2_dpy->gbm_dri->screen;
|
||||||
dri2_dpy->core = dri2_dpy->gbm_dri->core;
|
dri2_dpy->core = dri2_dpy->gbm_dri->core;
|
||||||
dri2_dpy->dri2 = dri2_dpy->gbm_dri->dri2;
|
dri2_dpy->dri2 = dri2_dpy->gbm_dri->dri2;
|
||||||
|
dri2_dpy->fence = dri2_dpy->gbm_dri->fence;
|
||||||
dri2_dpy->image = dri2_dpy->gbm_dri->image;
|
dri2_dpy->image = dri2_dpy->gbm_dri->image;
|
||||||
dri2_dpy->flush = dri2_dpy->gbm_dri->flush;
|
dri2_dpy->flush = dri2_dpy->gbm_dri->flush;
|
||||||
dri2_dpy->swrast = dri2_dpy->gbm_dri->swrast;
|
dri2_dpy->swrast = dri2_dpy->gbm_dri->swrast;
|
||||||
|
|
|
||||||
|
|
@ -1991,6 +1991,7 @@ const __DRIextension *galliumdrm_driver_extensions[] = {
|
||||||
&driImageDriverExtension.base,
|
&driImageDriverExtension.base,
|
||||||
&driDRI2Extension.base,
|
&driDRI2Extension.base,
|
||||||
&gallium_config_options.base,
|
&gallium_config_options.base,
|
||||||
|
&dri2FenceExtension.base,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -239,11 +239,13 @@ struct dri_extension_match {
|
||||||
const char *name;
|
const char *name;
|
||||||
int version;
|
int version;
|
||||||
int offset;
|
int offset;
|
||||||
|
int optional;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct dri_extension_match dri_core_extensions[] = {
|
static struct dri_extension_match dri_core_extensions[] = {
|
||||||
{ __DRI2_FLUSH, 1, offsetof(struct gbm_dri_device, flush) },
|
{ __DRI2_FLUSH, 1, offsetof(struct gbm_dri_device, flush) },
|
||||||
{ __DRI_IMAGE, 1, offsetof(struct gbm_dri_device, image) },
|
{ __DRI_IMAGE, 1, offsetof(struct gbm_dri_device, image) },
|
||||||
|
{ __DRI2_FENCE, 2, offsetof(struct gbm_dri_device, fence), 1 },
|
||||||
{ NULL, 0, 0 }
|
{ NULL, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -279,7 +281,7 @@ dri_bind_extensions(struct gbm_dri_device *dri,
|
||||||
|
|
||||||
for (j = 0; matches[j].name; j++) {
|
for (j = 0; matches[j].name; j++) {
|
||||||
field = ((char *) dri + matches[j].offset);
|
field = ((char *) dri + matches[j].offset);
|
||||||
if (*(const __DRIextension **) field == NULL) {
|
if ((*(const __DRIextension **) field == NULL) && !matches[j].optional) {
|
||||||
ret = -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ struct gbm_dri_device {
|
||||||
|
|
||||||
const __DRIcoreExtension *core;
|
const __DRIcoreExtension *core;
|
||||||
const __DRIdri2Extension *dri2;
|
const __DRIdri2Extension *dri2;
|
||||||
|
const __DRI2fenceExtension *fence;
|
||||||
const __DRIimageExtension *image;
|
const __DRIimageExtension *image;
|
||||||
const __DRIswrastExtension *swrast;
|
const __DRIswrastExtension *swrast;
|
||||||
const __DRI2flushExtension *flush;
|
const __DRI2flushExtension *flush;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue