mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
freedreno: Protect gmem_cache ralloc allocations
Since the ralloc context for cache_key allocation is shared between all the contexts hanging off a screen, we need to allocate the key under the screen->lock. Fixes:91f9bb99c5("freedreno: add gmem state cache") Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7342> (cherry picked from commitcb034ae44f)
This commit is contained in:
parent
28c5ca4588
commit
53d03d91b8
2 changed files with 7 additions and 3 deletions
|
|
@ -3604,7 +3604,7 @@
|
|||
"description": "freedreno: Protect gmem_cache ralloc allocations",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "91f9bb99c5e0db38a1ac26dd9e6a967312f5e8b0"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -521,11 +521,15 @@ lookup_gmem_state(struct fd_batch *batch, bool assume_zs, bool no_scis_opt)
|
|||
struct fd_screen *screen = batch->ctx->screen;
|
||||
struct fd_gmem_cache *cache = &screen->gmem_cache;
|
||||
struct fd_gmem_stateobj *gmem = NULL;
|
||||
|
||||
/* Lock before allocating gmem_key, since that a screen-wide
|
||||
* ralloc pool and ralloc itself is not thread-safe.
|
||||
*/
|
||||
fd_screen_lock(screen);
|
||||
|
||||
struct gmem_key *key = gmem_key_init(batch, assume_zs, no_scis_opt);
|
||||
uint32_t hash = gmem_key_hash(key);
|
||||
|
||||
fd_screen_lock(screen);
|
||||
|
||||
struct hash_entry *entry =
|
||||
_mesa_hash_table_search_pre_hashed(cache->ht, hash, key);
|
||||
if (entry) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue