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];
- VkDescriptorUpdateTemplateKHR push_template;
};
struct zink_batch_descriptor_data {
VkDescriptorUpdateTemplateKHR t;
if (VKSCR(CreateDescriptorUpdateTemplate)(screen->dev, &template[i], NULL, &t) != VK_SUCCESS)
return false;
- if (is_push)
- pg->dd->push_template = t;
- else
- pg->dd->templates[i] = t;
+ pg->dd->templates[i] = t;
}
return true;
}
if (pg->dd->templates[i])
VKSCR(DestroyDescriptorUpdateTemplate)(screen->dev, pg->dd->templates[i], NULL);
}
- if (pg->dd && pg->dd->push_template)
- VKSCR(DestroyDescriptorUpdateTemplate)(screen->dev, pg->dd->push_template, NULL);
ralloc_free(pg->dd);
}
if (pg->dd->push_usage && (dd_lazy(ctx)->push_state_changed[is_compute] || bind_sets)) {
if (have_KHR_push_descriptor) {
if (dd_lazy(ctx)->push_state_changed[is_compute])
- VKCTX(CmdPushDescriptorSetWithTemplateKHR)(bs->cmdbuf, pg->dd->push_template,
+ VKCTX(CmdPushDescriptorSetWithTemplateKHR)(bs->cmdbuf, pg->dd->templates[0],
pg->layout, 0, ctx);
} else {
if (dd_lazy(ctx)->push_state_changed[is_compute]) {
- VKCTX(UpdateDescriptorSetWithTemplate)(screen->dev, push_set, pg->dd->push_template, ctx);
+ VKCTX(UpdateDescriptorSetWithTemplate)(screen->dev, push_set, pg->dd->templates[0], ctx);
bdd->sets[is_compute][0] = push_set;
}
assert(push_set || bdd->sets[is_compute][0]);