Mesa (master): gbm/dri: Check dri extension version before flush after unmap

Thomas Hellstrom thomash at kemper.freedesktop.org
Fri Mar 31 08:26:58 UTC 2017


Module: Mesa
Branch: master
Commit: 18e2aa063ca8e2aeb22a72253891e6f8f5d0d96b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=18e2aa063ca8e2aeb22a72253891e6f8f5d0d96b

Author: Thomas Hellstrom <thellstrom at vmware.com>
Date:   Thu Mar 30 16:33:47 2017 +0200

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: <mesa-stable at lists.freedesktop.org>
Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
Reviewed-by: Emil Velikov <emil.velikov at collabora.com>
Tested-by: Dylan Baker <dylan at pnwbakers.com>

---

 src/gbm/backends/dri/gbm_dri.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index 189a8fcde5..8df6a6b64d 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);
 }
 
 




More information about the mesa-commit mailing list