zink: fix descriptor cache pointer array allocation

this got mixed up during some refactor and started indexing based on the
number of bindings instead of the number of descriptors, which means
that array descriptor bindings would have overlapping array memory

cc: mesa-stable

Acked-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15226>
(cherry picked from commit ab3725f533)
This commit is contained in:
Mike Blumenkrantz 2022-03-02 15:49:29 -05:00 committed by Dylan Baker
parent 4f1a3be5f6
commit da86354624
2 changed files with 4 additions and 4 deletions

View file

@ -472,7 +472,7 @@
"description": "zink: fix descriptor cache pointer array allocation",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null
},

View file

@ -710,13 +710,13 @@ allocate_desc_set(struct zink_context *ctx, struct zink_program *pg, enum zink_d
#endif
switch (type) {
case ZINK_DESCRIPTOR_TYPE_SAMPLER_VIEW:
zds->sampler_states = (struct zink_sampler_state**)&samplers[i * pool->key->layout->num_bindings];
zds->sampler_states = (struct zink_sampler_state**)&samplers[i * num_resources];
FALLTHROUGH;
case ZINK_DESCRIPTOR_TYPE_IMAGE:
zds->surfaces = &surfaces[i * pool->key->layout->num_bindings];
zds->surfaces = &surfaces[i * num_resources];
break;
default:
zds->res_objs = (struct zink_resource_object**)&res_objs[i * pool->key->layout->num_bindings];
zds->res_objs = (struct zink_resource_object**)&res_objs[i * num_resources];
break;
}
zds->desc_set = desc_set[i];