zink: store the real (non-compact) binding usage for programs

this is useful for quickly determining whether a program has a certain
type of descriptor usage

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16755>
This commit is contained in:
Mike Blumenkrantz 2022-05-27 15:01:52 -04:00 committed by Marge Bot
parent 41fce7ae57
commit ddcd9c730c
2 changed files with 2 additions and 0 deletions

View file

@ -158,6 +158,7 @@ struct zink_program_descriptor_data {
bool bindless;
bool fbfetch;
uint8_t binding_usage;
uint8_t real_binding_usage;
struct zink_descriptor_pool_key *pool_key[ZINK_DESCRIPTOR_TYPES]; //push set doesn't need one
struct zink_descriptor_layout *layouts[ZINK_DESCRIPTOR_TYPES + 1];
VkDescriptorUpdateTemplateKHR templates[ZINK_DESCRIPTOR_TYPES + 1];

View file

@ -225,6 +225,7 @@ zink_descriptor_program_init_lazy(struct zink_context *ctx, struct zink_program
init_template_entry(shader, j, k, &entries[desc_set][entry_idx[desc_set]], &entry_idx[desc_set], screen->descriptor_mode == ZINK_DESCRIPTOR_MODE_LAZY);
num_bindings[desc_set]++;
has_bindings |= BITFIELD_BIT(desc_set);
pg->dd->real_binding_usage |= BITFIELD_BIT(j);
}
num_type_sizes[desc_set] = screen->compact_descriptors ?
descriptor_program_num_sizes_compact(sizes, desc_set) :