From 62f1a8a3a62efb8370dc51a20244ab23bc60a3b8 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 6 Mar 2023 07:18:24 -0500 Subject: [PATCH] zink: unbind fb on context destroy this ensures that batch refs are added for fb surfaces on unbind, which prevents stale batch tracking from persisting on resources after the context is destroyed fixes: *EGL.functional.render.multi_context* cc: mesa-stable Part-of: --- .../drivers/zink/ci/zink-anv-tgl-flakes.txt | 24 ------------------- src/gallium/drivers/zink/zink_context.c | 3 +++ 2 files changed, 3 insertions(+), 24 deletions(-) diff --git a/src/gallium/drivers/zink/ci/zink-anv-tgl-flakes.txt b/src/gallium/drivers/zink/ci/zink-anv-tgl-flakes.txt index 3ff0657ba71..24abff4673e 100644 --- a/src/gallium/drivers/zink/ci/zink-anv-tgl-flakes.txt +++ b/src/gallium/drivers/zink/ci/zink-anv-tgl-flakes.txt @@ -53,21 +53,6 @@ spec@glsl-4.00@execution@built-in-functions@fs-inverse-dmat4 # Around the time of running these tests there are some warnings from the kernel in dma_resv.c, and at least # some failures look like not waiting for rendering to complete. # Because those tests sometimes pass, keep them here -wayland-dEQP-EGL.functional.color_clears.multi_context.gles1_gles2_gles3.rgb565_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles1_gles2_gles3.rgb888_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles1_gles2_gles3.rgba8888_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles1_gles2.rgb565_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles1_gles2.rgb888_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles1_gles2.rgba8888_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles1.rgb565_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles1.rgb888_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles1.rgba8888_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles2.rgb565_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles2.rgb888_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles2.rgba8888_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles3.rgb565_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles3.rgb888_pbuffer,Fail -wayland-dEQP-EGL.functional.color_clears.multi_context.gles3.rgba8888_pbuffer,Fail wayland-dEQP-EGL.functional.color_clears.multi_thread.gles1_gles2_gles3.rgb565_pbuffer,Fail wayland-dEQP-EGL.functional.color_clears.multi_thread.gles1_gles2_gles3.rgb888_pbuffer,Fail wayland-dEQP-EGL.functional.color_clears.multi_thread.gles1_gles2_gles3.rgba8888_pbuffer,Fail @@ -93,15 +78,6 @@ wayland-dEQP-EGL.functional.color_clears.single_context.gles3.rgb565_pbuffer,Fai wayland-dEQP-EGL.functional.color_clears.single_context.gles3.rgb888_pbuffer,Fail wayland-dEQP-EGL.functional.color_clears.single_context.gles3.rgba8888_pbuffer,Fail wayland-dEQP-EGL.functional.negative_api.create_pixmap_surface,Fail -wayland-dEQP-EGL.functional.render.multi_context.gles2_gles3.rgb565_pbuffer,Fail -wayland-dEQP-EGL.functional.render.multi_context.gles2_gles3.rgb888_pbuffer,Fail -wayland-dEQP-EGL.functional.render.multi_context.gles2_gles3.rgba8888_pbuffer,Fail -wayland-dEQP-EGL.functional.render.multi_context.gles2.rgb565_pbuffer,Fail -wayland-dEQP-EGL.functional.render.multi_context.gles2.rgb888_pbuffer,Fail -wayland-dEQP-EGL.functional.render.multi_context.gles2.rgba8888_pbuffer,Fail -wayland-dEQP-EGL.functional.render.multi_context.gles3.rgb565_pbuffer,Fail -wayland-dEQP-EGL.functional.render.multi_context.gles3.rgb888_pbuffer,Fail -wayland-dEQP-EGL.functional.render.multi_context.gles3.rgba8888_pbuffer,Fail wayland-dEQP-EGL.functional.render.multi_thread.gles2_gles3.rgb565_pbuffer,Fail wayland-dEQP-EGL.functional.render.multi_thread.gles2_gles3.rgb888_pbuffer,Fail wayland-dEQP-EGL.functional.render.multi_thread.gles2_gles3.rgba8888_pbuffer,Fail diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index f88fe892700..fa71aa7ba55 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -101,6 +101,9 @@ zink_context_destroy(struct pipe_context *pctx) struct zink_context *ctx = zink_context(pctx); struct zink_screen *screen = zink_screen(pctx->screen); + struct pipe_framebuffer_state fb = {0}; + pctx->set_framebuffer_state(pctx, &fb); + if (util_queue_is_initialized(&screen->flush_queue)) util_queue_finish(&screen->flush_queue); if (ctx->batch.state && !screen->device_lost) {