diff --git a/base/vulkantools.cpp b/base/vulkantools.cpp index a9c86604..ce87becd 100644 --- a/base/vulkantools.cpp +++ b/base/vulkantools.cpp @@ -918,3 +918,22 @@ VkBindSparseInfo vkTools::initializers::bindSparseInfo() bindSparseInfo.sType = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO; return VkBindSparseInfo(); } + +VkSpecializationMapEntry vkTools::initializers::specializationMapEntry(uint32_t constantID, uint32_t offset, size_t size) +{ + VkSpecializationMapEntry specializationEntry{}; + specializationEntry.constantID = constantID; + specializationEntry.offset = offset; + specializationEntry.size = size; + return specializationEntry; +} + +VkSpecializationInfo vkTools::initializers::specializationInfo(uint32_t mapEntryCount, const VkSpecializationMapEntry* mapEntries, size_t dataSize, const void* data) +{ + VkSpecializationInfo specializationInfo{}; + specializationInfo.mapEntryCount = mapEntryCount; + specializationInfo.pMapEntries = mapEntries; + specializationInfo.dataSize = dataSize; + specializationInfo.pData = data; + return specializationInfo; +} diff --git a/base/vulkantools.h b/base/vulkantools.h index 90f369a9..38d5cf32 100644 --- a/base/vulkantools.h +++ b/base/vulkantools.h @@ -284,6 +284,12 @@ namespace vkTools uint32_t offset); VkBindSparseInfo bindSparseInfo(); + + /** @brief Initialize a map entry for a shader specialization constant */ + VkSpecializationMapEntry specializationMapEntry(uint32_t constantID, uint32_t offset, size_t size); + + /** @biref Initialize a specialization constant info structure to pass to a shader stage */ + VkSpecializationInfo specializationInfo(uint32_t mapEntryCount, const VkSpecializationMapEntry* mapEntries, size_t dataSize, const void* data); } }