aboutsummaryrefslogtreecommitdiffstats
path: root/src/vk-renderer.cpp
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2022-09-11 23:43:54 +0200
committerladevieq <ladevie.quentin@gmail.com>2022-09-11 23:43:54 +0200
commit1bb6caa5c8cb97f23f84ac9f3d4aa6c38b6d901c (patch)
tree3fb6d333aba40440ea5dd70382a7a58c727806fe /src/vk-renderer.cpp
parent2d16fbd7e235bf2cc96d451469d8d39cae1917c3 (diff)
Fix materials
Diffstat (limited to 'src/vk-renderer.cpp')
-rw-r--r--src/vk-renderer.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/vk-renderer.cpp b/src/vk-renderer.cpp
index 1cbf0be..54c667f 100644
--- a/src/vk-renderer.cpp
+++ b/src/vk-renderer.cpp
@@ -106,26 +106,31 @@ void vkrenderer::queue_image_update(Texture* texture) {
}
void vkrenderer::update_images() {
+ if(upload_queue.empty())
+ return;
+
auto* staging_buffer = staging_buffers[virtual_frame_index];
+ staging_buffer->reset();
VkCommandBuffer command_buffer = copy_command_buffers[virtual_frame_index];
vkrenderer::api.start_record(command_buffer);
while(!upload_queue.empty()) {
auto* texture = upload_queue.back();
- upload_queue.pop_back();
auto texture_size = texture->size();
auto offset = staging_buffer->alloc(texture_size);
- if (offset == RingBuffer::invalid_alloc) {
+ if (offset == RingBuffer::invalid_alloc)
break;
- }
+
+ upload_queue.pop_back();
staging_buffer->write(texture->data, offset, texture_size);
vkrenderer::api.image_barrier(command_buffer, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, 0, texture->device_image);
- vkrenderer::api.copy_buffer(command_buffer, staging_buffer->device_buffer, texture->device_image, offset);
+ vkrenderer::api.copy_buffer(command_buffer, staging_buffer->device_buffer, texture->device_image, 0, offset);
vkrenderer::api.image_barrier(command_buffer, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, 0, texture->device_image);
+ break;
}
vkrenderer::api.end_record(command_buffer);