iris: Change keybox parenting
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 5 Jun 2019 20:15:35 +0000 (13:15 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 22 Nov 2019 17:50:59 +0000 (09:50 -0800)
For temporary lookups, just allocate out of the NULL ralloc context,
so we don't have to edit the linked list of ralloc children to add it
and then immediately remove it again.

When uploading a new shader, allocate the keybox off the shader, so
if we delete the shader the keybox also goes away.  Less manual cleanup.

src/gallium/drivers/iris/iris_program_cache.c

index 4ec2a52c2de09aaafcac20c29f2557dbac3d3d1b..2c1224482c299db4570f83aac6f7a423430611dd 100644 (file)
@@ -89,8 +89,7 @@ iris_find_cached_shader(struct iris_context *ice,
                         uint32_t key_size,
                         const void *key)
 {
-   struct keybox *keybox =
-      make_keybox(ice->shaders.cache, cache_id, key, key_size);
+   struct keybox *keybox = make_keybox(NULL, cache_id, key, key_size);
    struct hash_entry *entry =
       _mesa_hash_table_search(ice->shaders.cache, keybox);
 
@@ -191,7 +190,7 @@ iris_upload_shader(struct iris_context *ice,
    /* Store the 3DSTATE shader packets and other derived state. */
    ice->vtbl.store_derived_program_state(ice, cache_id, shader);
 
-   struct keybox *keybox = make_keybox(cache, cache_id, key, key_size);
+   struct keybox *keybox = make_keybox(shader, cache_id, key, key_size);
    _mesa_hash_table_insert(ice->shaders.cache, keybox, shader);
 
    return shader;