struct nvk_pipeline *pipeline,
const VkAllocationCallbacks *pAllocator)
{
- for (uint32_t s = 0; s < ARRAY_SIZE(pipeline->shaders); s++) {
- if (pipeline->shaders[s].upload_size > 0) {
- nvk_heap_free(dev, &dev->shader_heap,
- pipeline->shaders[s].upload_addr,
- pipeline->shaders[s].upload_size);
- }
- free(pipeline->shaders[s].xfb);
- }
+ for (uint32_t s = 0; s < ARRAY_SIZE(pipeline->shaders); s++)
+ nvk_shader_finish(dev, &pipeline->shaders[s]);
vk_object_free(&dev->vk, pAllocator, pipeline);
}
return result;
}
+
+void
+nvk_shader_finish(struct nvk_device *dev, struct nvk_shader *shader)
+{
+ if (shader->upload_size > 0) {
+ nvk_heap_free(dev, &dev->shader_heap,
+ shader->upload_addr,
+ shader->upload_size);
+ }
+ free(shader->xfb);
+}