From 76ff213be668990366af15b2bbaba0986a55f24d Mon Sep 17 00:00:00 2001 From: Thomas Choquet Date: Mon, 16 Mar 2026 08:36:55 +0900 Subject: [PATCH 1/2] fix missing checks for bunnfer types --- include/Graphics/Enums.hpp | 1 - src/Vulkan/VulkanCommandBuffer.cpp | 17 ++++++++++++++--- src/Vulkan/VulkanEnums.hpp | 9 +-------- src/Vulkan/VulkanParameterBlock.cpp | 4 +++- 4 files changed, 18 insertions(+), 13 deletions(-) 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..708799d 100644 --- a/src/Vulkan/VulkanParameterBlock.cpp +++ b/src/Vulkan/VulkanParameterBlock.cpp @@ -12,8 +12,10 @@ #include "Vulkan/VulkanParameterBlock.hpp" #include "Vulkan/VulkanBuffer.hpp" #include "Vulkan/VulkanDevice.hpp" +#include "Vulkan/VulkanEnums.hpp" #include "Vulkan/VulkanParameterBlockPool.hpp" #include "Vulkan/VulkanParameterBlockLayout.hpp" +#include namespace gfx { @@ -54,7 +56,7 @@ void VulkanParameterBlock::setBinding(uint32_t idx, const std::shared_ptrbindings()[idx].type)) .setBufferInfo(bufferDescriptorInfo); m_device->vkDevice().updateDescriptorSets(writeDescriptorSet, {}); From 76130a6993b770c62bc864dd2165c03f3fddf13b Mon Sep 17 00:00:00 2001 From: Thomas Choquet Date: Mon, 16 Mar 2026 08:42:39 +0900 Subject: [PATCH 2/2] remove obc include --- src/Vulkan/VulkanParameterBlock.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Vulkan/VulkanParameterBlock.cpp b/src/Vulkan/VulkanParameterBlock.cpp index 708799d..27215c1 100644 --- a/src/Vulkan/VulkanParameterBlock.cpp +++ b/src/Vulkan/VulkanParameterBlock.cpp @@ -15,7 +15,6 @@ #include "Vulkan/VulkanEnums.hpp" #include "Vulkan/VulkanParameterBlockPool.hpp" #include "Vulkan/VulkanParameterBlockLayout.hpp" -#include namespace gfx {