aboutsummaryrefslogtreecommitdiffstats
path: root/src/gbm
diff options
context:
space:
mode:
authorThomas Hellstrom <[email protected]>2017-03-30 16:33:47 +0200
committerThomas Hellstrom <[email protected]>2017-03-31 10:25:46 +0200
commit18e2aa063ca8e2aeb22a72253891e6f8f5d0d96b (patch)
tree49990628c1c20d0ca4dc614fd076fb24f22c09d4 /src/gbm
parent02112c3ef7716955c889b6d10fb569b028a33f0e (diff)
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: <[email protected]> Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Tested-by: Dylan Baker <[email protected]>
Diffstat (limited to 'src/gbm')
-rw-r--r--src/gbm/backends/dri/gbm_dri.c5
1 files changed, 3 insertions, 2 deletions
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);
}