diff options
| author | Quentin LADEVIE <qladevie@wanadev.fr> | 2022-02-24 12:51:08 +0100 |
|---|---|---|
| committer | Quentin LADEVIE <qladevie@wanadev.fr> | 2022-02-24 12:51:08 +0100 |
| commit | 6d98e9d8b07d5c8aa0358780c38f29ffddfbf45f (patch) | |
| tree | 25e36cfd7a2917cb9ae14529239281dc157fd77f | |
| parent | b088d17e07dc68ff81830f40f4a49eda4f93dc13 (diff) | |
Make bindless descriptor a private member of vkapi
| -rw-r--r-- | include/vk-api.hpp | 7 | ||||
| -rw-r--r-- | src/compute-renderpass.cpp | 2 | ||||
| -rw-r--r-- | src/vk-api.cpp | 3 | ||||
| -rw-r--r-- | src/vk-renderer.cpp | 10 |
4 files changed, 13 insertions, 9 deletions
diff --git a/include/vk-api.hpp b/include/vk-api.hpp index de19a7d..1b9f51f 100644 --- a/include/vk-api.hpp +++ b/include/vk-api.hpp @@ -165,6 +165,8 @@ class vkapi { void update_descriptor_samplers(std::vector<sampler> &samplers); + void update_constants(VkCommandBuffer command_buffer, VkShaderStageFlagBits shader_stage, off_t offset, size_t size, void* data); + void start_record(VkCommandBuffer command_buffer); void image_barrier(VkCommandBuffer command_buffer, VkImageLayout dst_layout, VkPipelineStageFlagBits dst_stage, VkAccessFlags dst_access, image& image); @@ -184,14 +186,13 @@ class vkapi { VkResult submit(VkCommandBuffer command_buffer, VkSemaphore wait_semaphore, VkSemaphore signal_semaphore, VkFence submission_fence); VkResult present(swapchain& swapchain, uint32_t image_index, VkSemaphore wait_semaphore); - // private: vkcontext context; - global_descriptor bindless_descriptor; - private: + global_descriptor bindless_descriptor; + const char* shader_stage_extension(VkShaderStageFlags shader_stage); std::map<VkBuffer, buffer> buffers; diff --git a/src/compute-renderpass.cpp b/src/compute-renderpass.cpp index 87a2810..c680bac 100644 --- a/src/compute-renderpass.cpp +++ b/src/compute-renderpass.cpp @@ -37,7 +37,7 @@ void ComputeRenderpass::set_constant(off_t offset, Buffer* buffer) { } void ComputeRenderpass::execute(VkCommandBuffer command_buffer) { - vkCmdPushConstants(command_buffer, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_COMPUTE_BIT, 0, 64, (void*)&constants); + api.update_constants(command_buffer, VK_SHADER_STAGE_COMPUTE_BIT, 0, 64, (void*)&constants); for (auto& texture: input_textures) { api.image_barrier(command_buffer, VK_IMAGE_LAYOUT_GENERAL, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_ACCESS_SHADER_READ_BIT, texture->device_image); diff --git a/src/vk-api.cpp b/src/vk-api.cpp index 6ce7312..226314a 100644 --- a/src/vk-api.cpp +++ b/src/vk-api.cpp @@ -993,6 +993,9 @@ void vkapi::update_descriptor_samplers(std::vector<sampler> &samplers) { vkUpdateDescriptorSets(context.device, writes_descriptor.size(), writes_descriptor.data(), 0, nullptr); } +void vkapi::update_constants(VkCommandBuffer command_buffer, VkShaderStageFlagBits shader_stage, off_t offset, size_t size, void* data) { + vkCmdPushConstants(command_buffer, bindless_descriptor.pipeline_layout, shader_stage, offset, size, data); +} void vkapi::start_record(VkCommandBuffer command_buffer) { VkCommandBufferBeginInfo cmd_buf_begin_info = {}; diff --git a/src/vk-renderer.cpp b/src/vk-renderer.cpp index 8eb2f57..e2e62ff 100644 --- a/src/vk-renderer.cpp +++ b/src/vk-renderer.cpp @@ -223,12 +223,12 @@ void vkrenderer::ui() { -1.f - draw_data->DisplayPos.x * (2.f / draw_data->DisplaySize.x), -1.f - draw_data->DisplayPos.y * (2.f / draw_data->DisplaySize.y), }; - vkCmdPushConstants(cmd_buf, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_VERTEX_BIT, 64, 8, (void*)&ui_vertex_buffers[virtual_frame_index].device_address); - vkCmdPushConstants(cmd_buf, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_VERTEX_BIT, 72, 8, (void*)&scale); - vkCmdPushConstants(cmd_buf, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_VERTEX_BIT, 80, 8, (void*)&translate); + // vkCmdPushConstants(cmd_buf, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_VERTEX_BIT, 64, 8, (void*)&ui_vertex_buffers[virtual_frame_index].device_address); + // vkCmdPushConstants(cmd_buf, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_VERTEX_BIT, 72, 8, (void*)&scale); + // vkCmdPushConstants(cmd_buf, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_VERTEX_BIT, 80, 8, (void*)&translate); - vkCmdPushConstants(cmd_buf, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_FRAGMENT_BIT, 96, 4, (void*)&ui_texture.bindless_sampled_index); - vkCmdPushConstants(cmd_buf, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_FRAGMENT_BIT, 100, 4, (void*)&ui_texture_sampler.bindless_index); + // vkCmdPushConstants(cmd_buf, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_FRAGMENT_BIT, 96, 4, (void*)&ui_texture.bindless_sampled_index); + // vkCmdPushConstants(cmd_buf, api.bindless_descriptor.pipeline_layout, VK_SHADER_STAGE_FRAGMENT_BIT, 100, 4, (void*)&ui_texture_sampler.bindless_index); off_t vertex_buffer_offset = 0; off_t index_buffer_offset = 0; |
