diff --git a/include/Graphics/Enums.hpp b/include/Graphics/Enums.hpp index 3db9418..9abc1e3 100644 --- a/include/Graphics/Enums.hpp +++ b/include/Graphics/Enums.hpp @@ -129,7 +129,6 @@ enum class BufferUsage : uint8_t { vertexBuffer = 1 << 0, indexBuffer = 1 << 1, - uniformBuffer [[deprecated("use constantBuffer")]] = 1 << 2 , constantBuffer = 1 << 2, structuredBuffer = 1 << 3, copySource = 1 << 4, diff --git a/src/Vulkan/VulkanCommandBuffer.cpp b/src/Vulkan/VulkanCommandBuffer.cpp index 473d9a4..c4ff481 100644 --- a/src/Vulkan/VulkanCommandBuffer.cpp +++ b/src/Vulkan/VulkanCommandBuffer.cpp @@ -21,6 +21,7 @@ #include "Vulkan/VulkanTexture.hpp" #include "Vulkan/VulkanEnums.hpp" #include +#include #if defined(GFX_IMGUI_ENABLED) # include "Vulkan/imgui_impl_vulkan.h" #endif @@ -227,9 +228,19 @@ void VulkanCommandBuffer::setParameterBlock(const std::shared_ptr(binding.usages & (BindingUsage::vertexRead | BindingUsage::fragmentRead))) { - assert(binding.type == BindingType::constantBuffer); // currently only constant buffer are implemented - syncReq.accessMask |= vk::AccessFlagBits2::eUniformRead; + if (static_cast(binding.usages & (BindingUsage::vertexRead | BindingUsage::fragmentRead))) + { + switch (binding.type) + { + case BindingType::constantBuffer: + syncReq.accessMask |= vk::AccessFlagBits2::eUniformRead; + break; + case BindingType::structuredBuffer: + syncReq.accessMask |= vk::AccessFlagBits2::eShaderStorageRead; + break; + default: + std::unreachable(); + } } if (static_cast(binding.usages & (BindingUsage::vertexWrite | BindingUsage::fragmentWrite))) { throw std::runtime_error("not implemented"); diff --git a/src/Vulkan/VulkanEnums.hpp b/src/Vulkan/VulkanEnums.hpp index bc13efa..2ff8c6b 100644 --- a/src/Vulkan/VulkanEnums.hpp +++ b/src/Vulkan/VulkanEnums.hpp @@ -111,15 +111,13 @@ constexpr vk::Format toVkFormat(VertexAttributeFormat fmt) constexpr vk::BufferUsageFlags toVkBufferUsageFlags(BufferUsages use) { - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wdeprecated-declarations" vk::BufferUsageFlags vkUsages; if (use & BufferUsage::vertexBuffer) vkUsages |= vk::BufferUsageFlagBits::eVertexBuffer; if (use & BufferUsage::indexBuffer) vkUsages |= vk::BufferUsageFlagBits::eIndexBuffer; - if (use & BufferUsage::uniformBuffer || use & BufferUsage::constantBuffer) + if (use & BufferUsage::constantBuffer) vkUsages |= vk::BufferUsageFlagBits::eUniformBuffer; if (use & BufferUsage::structuredBuffer) vkUsages |= vk::BufferUsageFlagBits::eStorageBuffer; @@ -129,16 +127,12 @@ constexpr vk::BufferUsageFlags toVkBufferUsageFlags(BufferUsages use) vkUsages |= vk::BufferUsageFlagBits::eTransferDst; return vkUsages; - #pragma GCC diagnostic pop } constexpr vk::DescriptorType toVkDescriptorType(BindingType tpe) { - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wdeprecated-declarations" switch (tpe) { - case BindingType::uniformBuffer: case BindingType::constantBuffer: return vk::DescriptorType::eUniformBuffer; case BindingType::structuredBuffer: @@ -150,7 +144,6 @@ constexpr vk::DescriptorType toVkDescriptorType(BindingType tpe) default: throw std::runtime_error("not implemented"); } - #pragma GCC diagnostic pop } constexpr vk::ShaderStageFlags toVkShaderStageFlags(BindingUsages use) diff --git a/src/Vulkan/VulkanParameterBlock.cpp b/src/Vulkan/VulkanParameterBlock.cpp index 1df104b..27215c1 100644 --- a/src/Vulkan/VulkanParameterBlock.cpp +++ b/src/Vulkan/VulkanParameterBlock.cpp @@ -12,6 +12,7 @@ #include "Vulkan/VulkanParameterBlock.hpp" #include "Vulkan/VulkanBuffer.hpp" #include "Vulkan/VulkanDevice.hpp" +#include "Vulkan/VulkanEnums.hpp" #include "Vulkan/VulkanParameterBlockPool.hpp" #include "Vulkan/VulkanParameterBlockLayout.hpp" @@ -54,7 +55,7 @@ void VulkanParameterBlock::setBinding(uint32_t idx, const std::shared_ptrbindings()[idx].type)) .setBufferInfo(bufferDescriptorInfo); m_device->vkDevice().updateDescriptorSets(writeDescriptorSet, {});