Mesa (main): Revert "st/mesa: execute glFlush asynchronously if no image has been imported/exported"

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 9 22:49:46 UTC 2021


Module: Mesa
Branch: main
Commit: 5066839ffdbeac5b8d24f83e7c55cb20545cd48b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5066839ffdbeac5b8d24f83e7c55cb20545cd48b

Author: Rob Clark <robdclark at chromium.org>
Date:   Wed Jun  9 13:29:50 2021 -0700

Revert "st/mesa: execute glFlush asynchronously if no image has been imported/exported"

A number of the piglit glx tests use multiple contexts on a single
thread, and previously the flush in MakeCurrent() was enforcing the
ordering between draws on those different contexts.  When that flush
made ASYNC, now there is nothing ordering the draws because we have
two (or more) driver threads for a single frontend thread which is
using nothing more than glxMakeCurrent() to enforce the ordering.

This reverts commit 057a702a3f6a78a8bcd347a74e5a79d70dfc4153.

Fixes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4903
Acked-by: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11278>

---

 src/gallium/frontends/dri/dri_helpers.c | 2 --
 src/mesa/main/mtypes.h                  | 8 --------
 src/mesa/state_tracker/st_cb_eglimage.c | 1 -
 src/mesa/state_tracker/st_cb_flush.c    | 2 +-
 4 files changed, 1 insertion(+), 12 deletions(-)

diff --git a/src/gallium/frontends/dri/dri_helpers.c b/src/gallium/frontends/dri/dri_helpers.c
index 583ce67978d..4170a4c9533 100644
--- a/src/gallium/frontends/dri/dri_helpers.c
+++ b/src/gallium/frontends/dri/dri_helpers.c
@@ -309,7 +309,6 @@ dri2_create_image_from_renderbuffer2(__DRIcontext *context,
    if (dri2_get_mapping_by_format(img->dri_format))
       p_ctx->flush_resource(p_ctx, tex);
 
-   ctx->Shared->HasExternallySharedImages = true;
    *error = __DRI_IMAGE_ERROR_SUCCESS;
    return img;
 }
@@ -408,7 +407,6 @@ dri2_create_from_texture(__DRIcontext *context, int target, unsigned texture,
    if (dri2_get_mapping_by_format(img->dri_format))
       p_ctx->flush_resource(p_ctx, tex);
 
-   ctx->Shared->HasExternallySharedImages = true;
    *error = __DRI_IMAGE_ERROR_SUCCESS;
    return img;
 }
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index e7474ad0262..ee1c19df9a2 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -3474,14 +3474,6 @@ struct gl_shared_state
     * frequency changes.
     */
    bool DisjointOperation;
-
-   /**
-    * Whether at least one image has been imported or exported, excluding
-    * the default framebuffer. If this is false, glFlush can be executed
-    * asynchronously because there is no invisible dependency on external
-    * users.
-    */
-   bool HasExternallySharedImages;
 };
 
 
diff --git a/src/mesa/state_tracker/st_cb_eglimage.c b/src/mesa/state_tracker/st_cb_eglimage.c
index 9bd53148aa7..0c487d01021 100644
--- a/src/mesa/state_tracker/st_cb_eglimage.c
+++ b/src/mesa/state_tracker/st_cb_eglimage.c
@@ -192,7 +192,6 @@ st_get_egl_image(struct gl_context *ctx, GLeglImageOES image_handle,
       return false;
    }
 
-   ctx->Shared->HasExternallySharedImages = true;
    return true;
 }
 
diff --git a/src/mesa/state_tracker/st_cb_flush.c b/src/mesa/state_tracker/st_cb_flush.c
index ee72c331cdd..bec1c2f177b 100644
--- a/src/mesa/state_tracker/st_cb_flush.c
+++ b/src/mesa/state_tracker/st_cb_flush.c
@@ -98,7 +98,7 @@ st_glFlush(struct gl_context *ctx)
     * synchronization issues.  Calling finish() here will just hide
     * problems that need to be fixed elsewhere.
     */
-   st_flush(st, NULL, ctx->Shared->HasExternallySharedImages ? 0 : PIPE_FLUSH_ASYNC);
+   st_flush(st, NULL, 0);
 
    st_manager_flush_frontbuffer(st);
 }



More information about the mesa-commit mailing list