return need_flush;
}
+static unsigned
+init_write_descriptor(struct zink_shader *shader, struct zink_descriptor_set *zds, int idx, VkWriteDescriptorSet *wd, unsigned num_wds)
+{
+ wd->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
+ wd->pNext = NULL;
+ wd->dstBinding = shader->bindings[zds->type][idx].binding;
+ wd->dstArrayElement = 0;
+ wd->descriptorCount = shader->bindings[zds->type][idx].size;
+ wd->descriptorType = shader->bindings[zds->type][idx].type;
+ wd->dstSet = zds->desc_set;
+ return num_wds + 1;
+}
+
static bool
update_ubo_descriptors(struct zink_context *ctx, struct zink_descriptor_set *zds, struct zink_transition *transitions, int *num_transitions,
struct set *transition_hash, bool is_compute, bool cache_hit)
wds[num_wds].pBufferInfo = buffer_infos + num_buffer_info;
++num_buffer_info;
- wds[num_wds].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
- wds[num_wds].pNext = NULL;
- wds[num_wds].dstBinding = shader->bindings[zds->type][j].binding;
- wds[num_wds].dstArrayElement = 0;
- wds[num_wds].descriptorCount = shader->bindings[zds->type][j].size;
- wds[num_wds].descriptorType = shader->bindings[zds->type][j].type;
- wds[num_wds].dstSet = zds->desc_set;
- ++num_wds;
+ num_wds = init_write_descriptor(shader, zds, j, &wds[num_wds], num_wds);
}
}
wds[num_wds].pBufferInfo = buffer_infos + num_buffer_info;
++num_buffer_info;
- wds[num_wds].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
- wds[num_wds].pNext = NULL;
- wds[num_wds].dstBinding = shader->bindings[zds->type][j].binding;
- wds[num_wds].dstArrayElement = 0;
- wds[num_wds].descriptorCount = shader->bindings[zds->type][j].size;
- wds[num_wds].descriptorType = shader->bindings[zds->type][j].type;
- wds[num_wds].dstSet = zds->desc_set;
- ++num_wds;
+ num_wds = init_write_descriptor(shader, zds, j, &wds[num_wds], num_wds);
}
}
}
assert(num_wds < num_descriptors);
- wds[num_wds].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
- wds[num_wds].pNext = NULL;
- wds[num_wds].dstBinding = shader->bindings[zds->type][j].binding;
- wds[num_wds].dstArrayElement = 0;
- wds[num_wds].descriptorCount = shader->bindings[zds->type][j].size;
- wds[num_wds].descriptorType = shader->bindings[zds->type][j].type;
- wds[num_wds].dstSet = zds->desc_set;
- ++num_wds;
+ num_wds = init_write_descriptor(shader, zds, j, &wds[num_wds], num_wds);
}
}
}
assert(num_wds < num_descriptors);
- wds[num_wds].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
- wds[num_wds].pNext = NULL;
- wds[num_wds].dstBinding = shader->bindings[zds->type][j].binding;
- wds[num_wds].dstArrayElement = 0;
- wds[num_wds].descriptorCount = shader->bindings[zds->type][j].size;
- wds[num_wds].descriptorType = shader->bindings[zds->type][j].type;
- wds[num_wds].dstSet = zds->desc_set;
- ++num_wds;
+ num_wds = init_write_descriptor(shader, zds, j, &wds[num_wds], num_wds);
}
}