freedreno/ir3: Add missing shader prog cache invalidation
authorRob Clark <robdclark@chromium.org>
Thu, 11 Feb 2021 22:37:00 +0000 (14:37 -0800)
committerMarge Bot <eric+marge@anholt.net>
Tue, 16 Feb 2021 23:43:44 +0000 (23:43 +0000)
I'm not aware of actually hitting this case, but we need to consider
more than just vs/fs when shader state is deleted.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8795>

src/gallium/drivers/freedreno/ir3/ir3_cache.c

index e5ff5a2..3d9ebf7 100644 (file)
@@ -169,7 +169,9 @@ void ir3_cache_invalidate(struct ir3_cache *cache, void *stobj)
 {
        hash_table_foreach(cache->ht, entry) {
                const struct ir3_cache_key *key = entry->key;
-               if ((key->fs == stobj) || (key->vs == stobj)) {
+               if ((key->fs == stobj) || (key->vs == stobj) ||
+                               (key->ds == stobj) || (key->hs == stobj) ||
+                               (key->gs == stobj)) {
                        cache->funcs->destroy_state(cache->data, entry->data);
                        _mesa_hash_table_remove(cache->ht, entry);
                        return;