diff --git a/src/Magnum/Vk/DescriptorSetLayout.cpp b/src/Magnum/Vk/DescriptorSetLayout.cpp index 31cbac41e..2d604a14a 100644 --- a/src/Magnum/Vk/DescriptorSetLayout.cpp +++ b/src/Magnum/Vk/DescriptorSetLayout.cpp @@ -28,6 +28,7 @@ #include #include +#include #include #include "Magnum/Vk/Assert.h" @@ -90,7 +91,7 @@ DescriptorSetLayoutBinding& DescriptorSetLayoutBinding::operator=(DescriptorSetL return *this; } -DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo(const Containers::ArrayView> bindings, const Flags flags): _info{} { +DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo(const Containers::Iterable bindings, const Flags flags): _info{} { /* Check the total count of immutable samplers to allocate them all in a contiguous memory location. Also check if we have any binding flags. If yes, we have to create an additional array and put a structure into the @@ -146,7 +147,7 @@ DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo(const Containers::A } } -DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo(const std::initializer_list> bindings, const Flags flags): DescriptorSetLayoutCreateInfo{Containers::arrayView(bindings), flags} {} +DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo(const std::initializer_list> bindings, const Flags flags): DescriptorSetLayoutCreateInfo{Containers::Iterable{bindings}, flags} {} DescriptorSetLayoutCreateInfo::DescriptorSetLayoutCreateInfo(NoInitT) noexcept {} diff --git a/src/Magnum/Vk/DescriptorSetLayoutCreateInfo.h b/src/Magnum/Vk/DescriptorSetLayoutCreateInfo.h index 1ba013349..0d07ed378 100644 --- a/src/Magnum/Vk/DescriptorSetLayoutCreateInfo.h +++ b/src/Magnum/Vk/DescriptorSetLayoutCreateInfo.h @@ -46,6 +46,14 @@ #include "Magnum/Vk/Vk.h" #include "Magnum/Vk/Vulkan.h" +#ifdef MAGNUM_BUILD_DEPRECATED +/* DescriptorSetLayoutCreateInfo constructor used to take an + ArrayView>, now it's through the + Iterable class. Include it explicitly until people learn to include it + themselves. */ +#include +#endif + namespace Magnum { namespace Vk { /** @@ -315,8 +323,12 @@ class MAGNUM_VK_EXPORT DescriptorSetLayoutCreateInfo { * - `pBindingFlags` to a list of all * @ref DescriptorSetLayoutBinding::flags() from @p bindings */ - explicit DescriptorSetLayoutCreateInfo(Containers::ArrayView> bindings, Flags flags = {}); + explicit DescriptorSetLayoutCreateInfo(Containers::Iterable bindings, Flags flags = {}); + /** @overload */ + /* Iterable takes std::initializer_list itself but having it also here + allows to do stuff like `DescriptorSetLayoutCreateInfo{a, b}` and + (admittedly weird) `DescriptorSetLayoutCreateInfo{}` as well. */ explicit DescriptorSetLayoutCreateInfo(std::initializer_list> bindings, Flags flags = {}); /** diff --git a/src/Magnum/Vk/Test/DescriptorSetLayoutTest.cpp b/src/Magnum/Vk/Test/DescriptorSetLayoutTest.cpp index 7e229626c..1ba7b9752 100644 --- a/src/Magnum/Vk/Test/DescriptorSetLayoutTest.cpp +++ b/src/Magnum/Vk/Test/DescriptorSetLayoutTest.cpp @@ -24,6 +24,7 @@ */ #include +#include #include #include "Magnum/Vk/DescriptorSetLayoutCreateInfo.h" diff --git a/src/Magnum/Vk/Test/DescriptorSetLayoutVkTest.cpp b/src/Magnum/Vk/Test/DescriptorSetLayoutVkTest.cpp index 4600ba25f..2795abbda 100644 --- a/src/Magnum/Vk/Test/DescriptorSetLayoutVkTest.cpp +++ b/src/Magnum/Vk/Test/DescriptorSetLayoutVkTest.cpp @@ -23,6 +23,8 @@ DEALINGS IN THE SOFTWARE. */ +#include + #include "Magnum/Vk/DescriptorSetLayoutCreateInfo.h" #include "Magnum/Vk/DescriptorType.h" #include "Magnum/Vk/Result.h"