Mesa (main): zink: be more consistent about applying module hash for gfx pipeline
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Nov 10 01:29:41 UTC 2021
Module: Mesa
Branch: main
Commit: bfa81c1e8c8f1885ab63c4c09e57e4c0bbb37bb2
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bfa81c1e8c8f1885ab63c4c09e57e4c0bbb37bb2
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Tue Nov 9 19:42:16 2021 -0500
zink: be more consistent about applying module hash for gfx pipeline
this was a little spaghetti-ish: the module hash was sometimes being applied
during module update, sometimes in draw during program create, and then also
it was removed when a shader unbind would cause the program to no longer be reachable
now things are more consistent:
* keep removing module hash when program becomes unreachable
* only apply module hash in draw during updates there
cc: mesa-stable
Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13727>
---
src/gallium/drivers/zink/zink_draw.cpp | 4 ++++
src/gallium/drivers/zink/zink_program.c | 4 ----
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/gallium/drivers/zink/zink_draw.cpp b/src/gallium/drivers/zink/zink_draw.cpp
index 1548f64229c..2be1085048b 100644
--- a/src/gallium/drivers/zink/zink_draw.cpp
+++ b/src/gallium/drivers/zink/zink_draw.cpp
@@ -207,7 +207,11 @@ update_gfx_program(struct zink_context *ctx)
ctx->gfx_pipeline_state.final_hash ^= ctx->curr_program->last_variant_hash;
ctx->gfx_dirty = false;
} else if (ctx->dirty_shader_stages & bits) {
+ /* remove old hash */
+ ctx->gfx_pipeline_state.final_hash ^= ctx->curr_program->last_variant_hash;
zink_update_gfx_program(ctx, ctx->curr_program);
+ /* apply new hash */
+ ctx->gfx_pipeline_state.final_hash ^= ctx->curr_program->last_variant_hash;
}
ctx->dirty_shader_stages &= ~bits;
}
diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c
index 03f2756cbe6..7802a37376d 100644
--- a/src/gallium/drivers/zink/zink_program.c
+++ b/src/gallium/drivers/zink/zink_program.c
@@ -179,9 +179,6 @@ update_gfx_shader_modules(struct zink_context *ctx,
}
if (hash_changed && state) {
- if (!first && likely(state->pipeline)) //avoid on first hash
- state->final_hash ^= prog->last_variant_hash;
-
if (default_variants && !first)
prog->last_variant_hash = prog->default_variant_hash;
else {
@@ -192,7 +189,6 @@ update_gfx_shader_modules(struct zink_context *ctx,
}
}
- state->final_hash ^= prog->last_variant_hash;
state->modules_changed = true;
}
}
More information about the mesa-commit
mailing list