From e2dfd50a55c5927d8b5035f4f08f5a8e456b6fa0 Mon Sep 17 00:00:00 2001 From: GeorgH93 Date: Tue, 8 Aug 2023 23:36:11 +0200 Subject: [PATCH] Optimize push constants usage --- openVulkanoCpp/Vulkan/Pipeline.hpp | 5 ++--- openVulkanoCpp/Vulkan/Renderer.cpp | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/openVulkanoCpp/Vulkan/Pipeline.hpp b/openVulkanoCpp/Vulkan/Pipeline.hpp index 8e3808b..1df19da 100644 --- a/openVulkanoCpp/Vulkan/Pipeline.hpp +++ b/openVulkanoCpp/Vulkan/Pipeline.hpp @@ -34,9 +34,8 @@ namespace openVulkanoCpp::Vulkan private: void CreatePipelineLayout() { - vk::PushConstantRange camPushConstantDesc = { vk::ShaderStageFlagBits::eVertex, 0, 3 * sizeof(Math::Matrix4f) + sizeof(Math::Vector4f) + 4 * sizeof(float) }; - vk::PushConstantRange camPushConstantDescFrag = { vk::ShaderStageFlagBits::eFragment, camPushConstantDesc.size, camPushConstantDesc.size }; - std::array camPushConstantDescs = { camPushConstantDesc, camPushConstantDescFrag }; + vk::PushConstantRange camPushConstantDesc = { vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment, 0, 3 * sizeof(Math::Matrix4f) + sizeof(Math::Vector4f) + 4 * sizeof(float) }; + std::array camPushConstantDescs = { camPushConstantDesc }; vk::DescriptorSetLayoutBinding nodeLayoutBinding = { 0, vk::DescriptorType::eUniformBufferDynamic, 1, vk::ShaderStageFlagBits::eVertex }; //vk::DescriptorSetLayoutBinding textureLayoutBinding = { 0, vk::DescriptorType::image }; std::array layoutBindings = { nodeLayoutBinding }; diff --git a/openVulkanoCpp/Vulkan/Renderer.cpp b/openVulkanoCpp/Vulkan/Renderer.cpp index 7543952..035759f 100644 --- a/openVulkanoCpp/Vulkan/Renderer.cpp +++ b/openVulkanoCpp/Vulkan/Renderer.cpp @@ -147,7 +147,7 @@ namespace openVulkanoCpp::Vulkan cmdHelper->Reset(); vk::CommandBufferInheritanceInfo inheritance = { context.swapChainRenderPass.renderPass, 0, context.swapChainRenderPass.GetFrameBuffer()->GetCurrentFrameBuffer() }; cmdHelper->cmdBuffer.begin(vk::CommandBufferBeginInfo{ vk::CommandBufferUsageFlagBits::eOneTimeSubmit | vk::CommandBufferUsageFlagBits::eRenderPassContinue, &inheritance }); - cmdHelper->cmdBuffer.pushConstants(context.pipeline.pipelineLayout, vk::ShaderStageFlagBits::eVertex, 0, 3 * sizeof(Math::Matrix4f) + sizeof(Math::Vector4f) + 4 * sizeof(float), &scene->GetCamera()->GetViewProjectionMatrix()); + cmdHelper->cmdBuffer.pushConstants(context.pipeline.pipelineLayout, vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment, 0, 3 * sizeof(Math::Matrix4f) + sizeof(Math::Vector4f) + 4 * sizeof(float), &scene->GetCamera()->GetViewProjectionMatrix()); Scene::Drawable** drawablePointer; VulkanDrawContext drawContext { poolId, currentImageId, cmdHelper->cmdBuffer, this };