render/vulkan: add upload timeline semaphore

Doesn't do much at the moment, since it's always signalled when
we submit the stage buffer.
This commit is contained in:
Simon Ser 2023-11-24 18:08:36 +01:00
parent 361804c727
commit a59dd1d567
5 changed files with 50 additions and 12 deletions

View file

@ -81,6 +81,8 @@ static bool write_pixels(struct wlr_vk_texture *texture,
return false;
}
uint64_t timeline_point = ++renderer->upload_timeline_point;
void *vmap;
res = vkMapMemory(dev, span.buffer->memory, span.alloc.start,
bsize, 0, &vmap);
@ -141,6 +143,18 @@ static bool write_pixels(struct wlr_vk_texture *texture,
assert((uint32_t)(map - (char *)vmap) == bsize);
vkUnmapMemory(dev, span.buffer->memory);
VkSemaphoreSignalInfoKHR signal_info = {
.sType = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR,
.semaphore = renderer->upload_timeline_semaphore,
.value = timeline_point,
};
res = renderer->dev->api.vkSignalSemaphoreKHR(renderer->dev->dev, &signal_info);
if (res != VK_SUCCESS) {
free(copies);
wlr_vk_error("vkMapMemory", res);
return false;
}
// record staging cb
// will be executed before next frame
VkCommandBuffer cb = vulkan_record_stage_cb(renderer);