aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/vk-api.hpp7
-rw-r--r--src/compute-renderpass.cpp2
-rw-r--r--src/vk-api.cpp3
-rw-r--r--src/vk-renderer.cpp10
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;