zink: disable tc flush notify with rp optimizing
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 15 Mar 2023 20:38:30 +0000 (16:38 -0400)
committerMarge Bot <emma+marge@anholt.net>
Fri, 17 Mar 2023 14:38:00 +0000 (14:38 +0000)
this is extremely broken and nonfunctional since it randomly flushes
mid-renderpass and triggers invalidations

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21800>

src/gallium/drivers/zink/zink_batch.c
src/gallium/drivers/zink/zink_context.c

index 435e633..193d337 100644 (file)
@@ -613,9 +613,10 @@ zink_end_batch(struct zink_context *ctx, struct zink_batch *batch)
    if (!ctx->queries_disabled)
       zink_suspend_queries(ctx, batch);
 
-   tc_driver_internal_flush_notify(ctx->tc);
 
    struct zink_screen *screen = zink_screen(ctx->base.screen);
+   if (!screen->driver_workarounds.track_renderpasses)
+      tc_driver_internal_flush_notify(ctx->tc);
    struct zink_batch_state *bs;
 
    /* oom flushing is triggered to handle stupid piglit tests like streaming-texture-leak */
index d58434e..b66ad4e 100644 (file)
@@ -4145,7 +4145,8 @@ zink_flush(struct pipe_context *pctx,
                 check_device_lost(ctx);
           }
        }
-       tc_driver_internal_flush_notify(ctx->tc);
+       if (!screen->driver_workarounds.track_renderpasses)
+         tc_driver_internal_flush_notify(ctx->tc);
    } else {
       fence = &batch->state->fence;
       submit_count = batch->state->submit_count;
@@ -5486,7 +5487,7 @@ zink_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
                                                      &(struct threaded_context_options){
                                                         .create_fence = zink_create_tc_fence_for_tc,
                                                         .is_resource_busy = zink_context_is_resource_busy,
-                                                        .driver_calls_flush_notify = true,
+                                                        .driver_calls_flush_notify = !screen->driver_workarounds.track_renderpasses,
                                                         .unsynchronized_get_device_reset_status = true,
                                                         .parse_renderpass_info = screen->driver_workarounds.track_renderpasses,
                                                         .dsa_parse = zink_tc_parse_dsa,