From: Thomas Hellstrom Date: Thu, 30 Mar 2017 14:33:47 +0000 (+0200) Subject: gbm/dri: Check dri extension version before flush after unmap X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=18e2aa063ca8e2aeb22a72253891e6f8f5d0d96b;p=mesa.git gbm/dri: Check dri extension version before flush after unmap The commit mentioned below required the __DRI2FlushExtension to have version 4 or above, for GBM functionality. That broke GBM with some classic dri drivers. Relax that requirement so that we only flush after unmap if we have version 4 or above. Drivers that require the flush for correct functionality should implement the desired version. Fixes: ba8df228 ("gbm/dri: Flush after unmap") Cc: Signed-off-by: Thomas Hellstrom Reviewed-by: Emil Velikov Tested-by: Dylan Baker --- diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c index 189a8fcde5a..8df6a6b64d0 100644 --- a/src/gbm/backends/dri/gbm_dri.c +++ b/src/gbm/backends/dri/gbm_dri.c @@ -253,7 +253,7 @@ struct dri_extension_match { }; static struct dri_extension_match dri_core_extensions[] = { - { __DRI2_FLUSH, 4, offsetof(struct gbm_dri_device, flush) }, + { __DRI2_FLUSH, 1, offsetof(struct gbm_dri_device, flush) }, { __DRI_IMAGE, 1, offsetof(struct gbm_dri_device, image) }, { __DRI2_FENCE, 1, offsetof(struct gbm_dri_device, fence), 1 }, { __DRI2_INTEROP, 1, offsetof(struct gbm_dri_device, interop), 1 }, @@ -1245,7 +1245,8 @@ gbm_dri_bo_unmap(struct gbm_bo *_bo, void *map_data) * on the mapping context. Since there is no explicit gbm flush * mechanism, we need to flush here. */ - dri->flush->flush_with_flags(dri->context, NULL, __DRI2_FLUSH_CONTEXT, 0); + if (dri->flush->base.version >= 4) + dri->flush->flush_with_flags(dri->context, NULL, __DRI2_FLUSH_CONTEXT, 0); }