radv: Do not hash vk_object_base in descriptor set layout.

It contains potentially pointer-y stuff.

Fixes: 178adfa6a8 ("radv: use the base object struct types")
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8809>
(cherry picked from commit 1eaefe6cfd)
This commit is contained in:
Bas Nieuwenhuizen 2021-02-01 13:19:26 +01:00 committed by Dylan Baker
parent 78107eaaac
commit 6753936d0e
2 changed files with 8 additions and 2 deletions

View file

@ -1687,7 +1687,7 @@
"description": "radv: Do not hash vk_object_base in descriptor set layout.",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"master_sha": null,
"because_sha": "178adfa6a8e5694a077c3e11fdcc5bc0802839ab"
},

View file

@ -504,7 +504,13 @@ VkResult radv_CreatePipelineLayout(
}
dynamic_offset_count += layout->set[set].dynamic_offset_count;
dynamic_shader_stages |= layout->set[set].dynamic_offset_stages;
_mesa_sha1_update(&ctx, set_layout, set_layout->layout_size);
/* Hash the entire set layout except for the vk_object_base. The
* rest of the set layout is carefully constructed to not have
* pointers so a full hash instead of a per-field hash should be ok. */
_mesa_sha1_update(&ctx,
(const char*)set_layout + sizeof(struct vk_object_base),
set_layout->layout_size - sizeof(struct vk_object_base));
}
layout->dynamic_offset_count = dynamic_offset_count;