From 74b1969d717f2428f0b9dcaaea611e95736120a5 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Tue, 16 Aug 2016 12:56:45 -0400 Subject: 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 --- src/gbm/backends/dri/gbm_dri.c | 4 +++- src/gbm/backends/dri/gbm_driint.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src/gbm') diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c index 9c3a51b2b9d..c1f9d62d366 100644 --- a/src/gbm/backends/dri/gbm_dri.c +++ b/src/gbm/backends/dri/gbm_dri.c @@ -239,11 +239,13 @@ struct dri_extension_match { const char *name; int version; int offset; + int optional; }; static struct dri_extension_match dri_core_extensions[] = { { __DRI2_FLUSH, 1, offsetof(struct gbm_dri_device, flush) }, { __DRI_IMAGE, 1, offsetof(struct gbm_dri_device, image) }, + { __DRI2_FENCE, 2, offsetof(struct gbm_dri_device, fence), 1 }, { NULL, 0, 0 } }; @@ -279,7 +281,7 @@ dri_bind_extensions(struct gbm_dri_device *dri, for (j = 0; matches[j].name; j++) { field = ((char *) dri + matches[j].offset); - if (*(const __DRIextension **) field == NULL) { + if ((*(const __DRIextension **) field == NULL) && !matches[j].optional) { ret = -1; } } diff --git a/src/gbm/backends/dri/gbm_driint.h b/src/gbm/backends/dri/gbm_driint.h index 46bb5c15619..9c550074847 100644 --- a/src/gbm/backends/dri/gbm_driint.h +++ b/src/gbm/backends/dri/gbm_driint.h @@ -51,6 +51,7 @@ struct gbm_dri_device { const __DRIcoreExtension *core; const __DRIdri2Extension *dri2; + const __DRI2fenceExtension *fence; const __DRIimageExtension *image; const __DRIswrastExtension *swrast; const __DRI2flushExtension *flush; -- cgit v1.2.3