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

Author: Marek Olšák <[email protected]>
Date:   Thu Nov  9 20:12:07 2017 +0100

st/dri: fix android fence regression

Fixes piglit - egl_khr_fence_sync/android_native tests.
Broken by 884a0b2a9e55d4c1ca39475b50d9af598d7d7280.

Introduce state-tracker flush flags, analogous to the pipe ones. Use
the former when with stapi->flush().

Fixes: 884a0b2a9e5 ("st/dri: use stapi flush instead of pipe flush
when creating fences")
Reviewed-by: Emil Velikov <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>

---

 src/gallium/include/state_tracker/st_api.h   | 2 ++
 src/gallium/state_trackers/dri/dri_helpers.c | 2 +-
 src/mesa/state_tracker/st_manager.c          | 7 +++++--
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/gallium/include/state_tracker/st_api.h 
b/src/gallium/include/state_tracker/st_api.h
index 11a9878cf6..6cdaefc902 100644
--- a/src/gallium/include/state_tracker/st_api.h
+++ b/src/gallium/include/state_tracker/st_api.h
@@ -147,6 +147,8 @@ enum st_attachment_type {
 #define ST_FLUSH_FRONT                    (1 << 0)
 #define ST_FLUSH_END_OF_FRAME             (1 << 1)
 #define ST_FLUSH_WAIT                     (1 << 2)
+#define ST_FLUSH_DEFERRED                 (1 << 3)
+#define ST_FLUSH_FENCE_FD                 (1 << 4)
 
 /**
  * Value to st_manager->get_param function.
diff --git a/src/gallium/state_trackers/dri/dri_helpers.c 
b/src/gallium/state_trackers/dri/dri_helpers.c
index a9213eca19..4a61455b1f 100644
--- a/src/gallium/state_trackers/dri/dri_helpers.c
+++ b/src/gallium/state_trackers/dri/dri_helpers.c
@@ -116,7 +116,7 @@ dri2_create_fence_fd(__DRIcontext *_ctx, int fd)
 
    if (fd == -1) {
       /* exporting driver created fence, flush: */
-      stapi->flush(stapi, PIPE_FLUSH_DEFERRED | PIPE_FLUSH_FENCE_FD,
+      stapi->flush(stapi, ST_FLUSH_DEFERRED | ST_FLUSH_FENCE_FD,
                    &fence->pipe_fence);
    } else {
       /* importing a foreign fence fd: */
diff --git a/src/mesa/state_tracker/st_manager.c 
b/src/mesa/state_tracker/st_manager.c
index aedbc13f7d..43d5dfdced 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -632,9 +632,12 @@ st_context_flush(struct st_context_iface *stctxi, unsigned 
flags,
    struct st_context *st = (struct st_context *) stctxi;
    unsigned pipe_flags = 0;
 
-   if (flags & ST_FLUSH_END_OF_FRAME) {
+   if (flags & ST_FLUSH_END_OF_FRAME)
       pipe_flags |= PIPE_FLUSH_END_OF_FRAME;
-   }
+   if (flags & ST_FLUSH_DEFERRED)
+      pipe_flags |= PIPE_FLUSH_DEFERRED;
+   if (flags & ST_FLUSH_FENCE_FD)
+      pipe_flags |= PIPE_FLUSH_FENCE_FD;
 
    FLUSH_VERTICES(st->ctx, 0);
    FLUSH_CURRENT(st->ctx, 0);

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to