Browse Source

Vk: use StringIterable for all extension/layer/workaround lists.

No backwards compatibility headers as the whole Vulkan wrapper is still
considered experimental. So people should expect pain and suffering.
pull/605/head
Vladimír Vondruš 4 years ago
parent
commit
441156542e
  1. 18
      src/Magnum/Vk/Device.cpp
  2. 5
      src/Magnum/Vk/Device.h
  3. 8
      src/Magnum/Vk/DeviceCreateInfo.h
  4. 7
      src/Magnum/Vk/DeviceProperties.cpp
  5. 11
      src/Magnum/Vk/DeviceProperties.h
  6. 9
      src/Magnum/Vk/ExtensionProperties.cpp
  7. 20
      src/Magnum/Vk/ExtensionProperties.h
  8. 18
      src/Magnum/Vk/Instance.cpp
  9. 5
      src/Magnum/Vk/Instance.h
  10. 8
      src/Magnum/Vk/InstanceCreateInfo.h
  11. 1
      src/Magnum/Vk/Test/DevicePropertiesVkTest.cpp
  12. 4
      src/Magnum/Vk/Test/DeviceVkTest.cpp
  13. 1
      src/Magnum/Vk/Test/ExtensionPropertiesVkTest.cpp
  14. 1
      src/Magnum/Vk/Test/InstanceVkTest.cpp

18
src/Magnum/Vk/Device.cpp

@ -290,7 +290,7 @@ DeviceCreateInfo& DeviceCreateInfo::operator=(DeviceCreateInfo&& other) noexcept
return *this; return *this;
} }
DeviceCreateInfo& DeviceCreateInfo::addEnabledExtensions(const Containers::ArrayView<const Containers::StringView> extensions) & { DeviceCreateInfo& DeviceCreateInfo::addEnabledExtensions(const Containers::StringIterable& extensions) & {
if(extensions.isEmpty()) return *this; if(extensions.isEmpty()) return *this;
/* This can happen in case we used the NoInit or VkDeviceCreateInfo /* This can happen in case we used the NoInit or VkDeviceCreateInfo
constructor */ constructor */
@ -322,15 +322,7 @@ DeviceCreateInfo& DeviceCreateInfo::addEnabledExtensions(const Containers::Array
return *this; return *this;
} }
DeviceCreateInfo&& DeviceCreateInfo::addEnabledExtensions(const Containers::ArrayView<const Containers::StringView> extensions) && { DeviceCreateInfo&& DeviceCreateInfo::addEnabledExtensions(const Containers::StringIterable& extensions) && {
return std::move(addEnabledExtensions(extensions));
}
DeviceCreateInfo& DeviceCreateInfo::addEnabledExtensions(const std::initializer_list<Containers::StringView> extensions) & {
return addEnabledExtensions(Containers::arrayView(extensions));
}
DeviceCreateInfo&& DeviceCreateInfo::addEnabledExtensions(const std::initializer_list<Containers::StringView> extensions) && {
return std::move(addEnabledExtensions(extensions)); return std::move(addEnabledExtensions(extensions));
} }
@ -661,7 +653,7 @@ constexpr Version KnownVersionsForExtensions[]{
} }
void Device::wrap(Instance& instance, const VkPhysicalDevice physicalDevice, const VkDevice handle, const Version version, const Containers::ArrayView<const Containers::StringView> enabledExtensions, const DeviceFeatures& enabledFeatures, const HandleFlags flags) { void Device::wrap(Instance& instance, const VkPhysicalDevice physicalDevice, const VkDevice handle, const Version version, const Containers::StringIterable& enabledExtensions, const DeviceFeatures& enabledFeatures, const HandleFlags flags) {
CORRADE_ASSERT(!_handle, CORRADE_ASSERT(!_handle,
"Vk::Device::wrap(): device already created", ); "Vk::Device::wrap(): device already created", );
@ -677,10 +669,6 @@ void Device::wrap(Instance& instance, const VkPhysicalDevice physicalDevice, con
initialize(instance, version, enabledExtensions, encounteredWorkarounds, enabledFeatures); initialize(instance, version, enabledExtensions, encounteredWorkarounds, enabledFeatures);
} }
void Device::wrap(Instance& instance, const VkPhysicalDevice physicalDevice, const VkDevice handle, const Version version, const std::initializer_list<Containers::StringView> enabledExtensions, const DeviceFeatures& enabledFeatures, const HandleFlags flags) {
wrap(instance, physicalDevice, handle, version, Containers::arrayView(enabledExtensions), enabledFeatures, flags);
}
Device::Device(Instance& instance, const DeviceCreateInfo& info): Device{NoCreate} { Device::Device(Instance& instance, const DeviceCreateInfo& info): Device{NoCreate} {
create(instance, info); create(instance, info);
} }

5
src/Magnum/Vk/Device.h

@ -273,10 +273,7 @@ class MAGNUM_VK_EXPORT Device {
* for different behavior. * for different behavior.
* @see @ref release() * @see @ref release()
*/ */
void wrap(Instance& instance, VkPhysicalDevice physicalDevice, VkDevice handle, Version version, Containers::ArrayView<const Containers::StringView> enabledExtensions, const DeviceFeatures& enabledFeatures, HandleFlags flags = {}); void wrap(Instance& instance, VkPhysicalDevice physicalDevice, VkDevice handle, Version version, const Containers::StringIterable& enabledExtensions, const DeviceFeatures& enabledFeatures, HandleFlags flags = {});
/** @overload */
void wrap(Instance& instance, VkPhysicalDevice physicalDevice, VkDevice handle, Version version, std::initializer_list<Containers::StringView> enabledExtensions, const DeviceFeatures& enabledFeatures, HandleFlags flags = {});
/** /**
* @brief Constructor * @brief Constructor

8
src/Magnum/Vk/DeviceCreateInfo.h

@ -190,13 +190,9 @@ class MAGNUM_VK_EXPORT DeviceCreateInfo {
* @link Containers::Literals::operator""_s() @endlink * @link Containers::Literals::operator""_s() @endlink
* literal to prevent that where possible. * literal to prevent that where possible.
*/ */
DeviceCreateInfo& addEnabledExtensions(Containers::ArrayView<const Containers::StringView> extensions) &; DeviceCreateInfo& addEnabledExtensions(const Containers::StringIterable& extensions) &;
/** @overload */ /** @overload */
DeviceCreateInfo&& addEnabledExtensions(Containers::ArrayView<const Containers::StringView> extensions) &&; DeviceCreateInfo&& addEnabledExtensions(const Containers::StringIterable& extensions) &&;
/** @overload */
DeviceCreateInfo& addEnabledExtensions(std::initializer_list<Containers::StringView> extension) &;
/** @overload */
DeviceCreateInfo&& addEnabledExtensions(std::initializer_list<Containers::StringView> extension) &&;
/** @overload */ /** @overload */
DeviceCreateInfo& addEnabledExtensions(Containers::ArrayView<const Extension> extensions) &; DeviceCreateInfo& addEnabledExtensions(Containers::ArrayView<const Extension> extensions) &;
/** @overload */ /** @overload */

7
src/Magnum/Vk/DeviceProperties.cpp

@ -29,6 +29,7 @@
#include <Corrade/Containers/EnumSet.hpp> #include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Containers/Optional.h> #include <Corrade/Containers/Optional.h>
#include <Corrade/Containers/StaticArray.h> #include <Corrade/Containers/StaticArray.h>
#include <Corrade/Containers/StringIterable.h>
#include <Corrade/Containers/StringView.h> #include <Corrade/Containers/StringView.h>
#include <Corrade/Utility/Arguments.h> #include <Corrade/Utility/Arguments.h>
#include <Corrade/Utility/Debug.h> #include <Corrade/Utility/Debug.h>
@ -237,15 +238,15 @@ void DeviceProperties::getFeaturesImplementation11(DeviceProperties& self, VkPhy
return (**self._instance).GetPhysicalDeviceFeatures2(self._handle, &features); return (**self._instance).GetPhysicalDeviceFeatures2(self._handle, &features);
} }
ExtensionProperties DeviceProperties::enumerateExtensionProperties(Containers::ArrayView<const Containers::StringView> layers) { ExtensionProperties DeviceProperties::enumerateExtensionProperties(const Containers::StringIterable& layers) {
return InstanceExtensionProperties{layers, [](void* state, const char* const layer, UnsignedInt* count, VkExtensionProperties* properties) { return InstanceExtensionProperties{layers, [](void* state, const char* const layer, UnsignedInt* count, VkExtensionProperties* properties) {
auto& deviceProperties = *static_cast<DeviceProperties*>(state); auto& deviceProperties = *static_cast<DeviceProperties*>(state);
return (**deviceProperties._instance).EnumerateDeviceExtensionProperties(deviceProperties._handle, layer, count, properties); return (**deviceProperties._instance).EnumerateDeviceExtensionProperties(deviceProperties._handle, layer, count, properties);
}, this}; }, this};
} }
ExtensionProperties DeviceProperties::enumerateExtensionProperties(std::initializer_list<Containers::StringView> layers) { ExtensionProperties DeviceProperties::enumerateExtensionProperties() {
return enumerateExtensionProperties(Containers::arrayView(layers)); return enumerateExtensionProperties({});
} }
const ExtensionProperties& DeviceProperties::extensionPropertiesInternal() { const ExtensionProperties& DeviceProperties::extensionPropertiesInternal() {

11
src/Magnum/Vk/DeviceProperties.h

@ -405,10 +405,13 @@ class MAGNUM_VK_EXPORT DeviceProperties {
* @see @ref LayerProperties::isSupported(), * @see @ref LayerProperties::isSupported(),
* @fn_vk_keyword{EnumerateDeviceExtensionProperties} * @fn_vk_keyword{EnumerateDeviceExtensionProperties}
*/ */
ExtensionProperties enumerateExtensionProperties(Containers::ArrayView<const Containers::StringView> layers = {}); #ifdef DOXYGEN_GENERATING_OUTPUT
ExtensionProperties enumerateExtensionProperties(const Containers::StringIterable& layers = {});
/** @overload */ #else
ExtensionProperties enumerateExtensionProperties(std::initializer_list<Containers::StringView> layers); /* To avoid including StringIterable */
ExtensionProperties enumerateExtensionProperties(const Containers::StringIterable& layers);
ExtensionProperties enumerateExtensionProperties();
#endif
/** /**
* @brief Device features * @brief Device features

9
src/Magnum/Vk/ExtensionProperties.cpp

@ -27,6 +27,7 @@
#include <algorithm> /* std::lower_bound() */ #include <algorithm> /* std::lower_bound() */
#include <Corrade/Containers/String.h> #include <Corrade/Containers/String.h>
#include <Corrade/Containers/StringIterable.h>
#include <Corrade/Containers/StringView.h> #include <Corrade/Containers/StringView.h>
#include <Corrade/Utility/Assert.h> #include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/Debug.h> #include <Corrade/Utility/Debug.h>
@ -45,7 +46,7 @@ ExtensionProperties::~ExtensionProperties() = default;
ExtensionProperties& ExtensionProperties::operator=(ExtensionProperties&&) noexcept = default; ExtensionProperties& ExtensionProperties::operator=(ExtensionProperties&&) noexcept = default;
ExtensionProperties::ExtensionProperties(const Containers::ArrayView<const Containers::StringView> layers, VkResult(*const enumerator)(void*, const char*, UnsignedInt*, VkExtensionProperties*), void* const state) { ExtensionProperties::ExtensionProperties(const Containers::StringIterable& layers, VkResult(*const enumerator)(void*, const char*, UnsignedInt*, VkExtensionProperties*), void* const state) {
/* Retrieve total extension count for all layers + the global extensions */ /* Retrieve total extension count for all layers + the global extensions */
std::size_t totalCount = 0; std::size_t totalCount = 0;
for(std::size_t i = 0; i <= layers.size(); ++i) { for(std::size_t i = 0; i <= layers.size(); ++i) {
@ -186,14 +187,14 @@ UnsignedInt InstanceExtensionProperties::revision(const InstanceExtension& exten
return revision(extension.string()); return revision(extension.string());
} }
InstanceExtensionProperties enumerateInstanceExtensionProperties(const Containers::ArrayView<const Containers::StringView> layers) { InstanceExtensionProperties enumerateInstanceExtensionProperties(const Containers::StringIterable& layers) {
return InstanceExtensionProperties{layers, [](void*, const char* const layer, UnsignedInt* count, VkExtensionProperties* properties) { return InstanceExtensionProperties{layers, [](void*, const char* const layer, UnsignedInt* count, VkExtensionProperties* properties) {
return vkEnumerateInstanceExtensionProperties(layer, count, properties); return vkEnumerateInstanceExtensionProperties(layer, count, properties);
}, nullptr}; }, nullptr};
} }
InstanceExtensionProperties enumerateInstanceExtensionProperties(const std::initializer_list<Containers::StringView> layers) { InstanceExtensionProperties enumerateInstanceExtensionProperties() {
return enumerateInstanceExtensionProperties(Containers::arrayView(layers)); return enumerateInstanceExtensionProperties({});
} }
}} }}

20
src/Magnum/Vk/ExtensionProperties.h

@ -183,7 +183,7 @@ class MAGNUM_VK_EXPORT ExtensionProperties {
private: private:
friend class InstanceExtensionProperties; friend class InstanceExtensionProperties;
explicit ExtensionProperties(const Containers::ArrayView<const Containers::StringView> layers, VkResult(*enumerator)(void*, const char*, UnsignedInt*, VkExtensionProperties*), void* state); explicit ExtensionProperties(const Containers::StringIterable& layers, VkResult(*enumerator)(void*, const char*, UnsignedInt*, VkExtensionProperties*), void* state);
Containers::ArrayTuple _data; Containers::ArrayTuple _data;
Containers::ArrayView<VkExtensionProperties> _extensions; Containers::ArrayView<VkExtensionProperties> _extensions;
@ -257,10 +257,10 @@ class MAGNUM_VK_EXPORT InstanceExtensionProperties: public ExtensionProperties {
/* The DAMN THING forgets parameter name if this is present, FFS. It /* The DAMN THING forgets parameter name if this is present, FFS. It
also lists this among friends, which is AN IMPLEMENTATION DETAIL */ also lists this among friends, which is AN IMPLEMENTATION DETAIL */
friend DeviceProperties; friend DeviceProperties;
friend MAGNUM_VK_EXPORT InstanceExtensionProperties enumerateInstanceExtensionProperties(Containers::ArrayView<const Containers::StringView>); friend MAGNUM_VK_EXPORT InstanceExtensionProperties enumerateInstanceExtensionProperties(const Containers::StringIterable&);
#endif #endif
explicit InstanceExtensionProperties(const Containers::ArrayView<const Containers::StringView> layers, VkResult(*enumerator)(void*, const char*, UnsignedInt*, VkExtensionProperties*), void* state): ExtensionProperties{layers, enumerator, state} {} explicit InstanceExtensionProperties(const Containers::StringIterable& layers, VkResult(*enumerator)(void*, const char*, UnsignedInt*, VkExtensionProperties*), void* state): ExtensionProperties{layers, enumerator, state} {}
}; };
/** /**
@ -272,13 +272,13 @@ Expects that all listed layers are supported.
@see @ref LayerProperties::isSupported(), @see @ref LayerProperties::isSupported(),
@fn_vk_keyword{EnumerateExtensionProperties} @fn_vk_keyword{EnumerateExtensionProperties}
*/ */
MAGNUM_VK_EXPORT InstanceExtensionProperties enumerateInstanceExtensionProperties(Containers::ArrayView<const Containers::StringView> layers = {}); #ifdef DOXYGEN_GENERATING_OUTPUT
MAGNUM_VK_EXPORT InstanceExtensionProperties enumerateInstanceExtensionProperties(const Containers::StringIterable& layers = {});
/** #else
* @overload /* To avoid including StringIterable */
* @m_since_latest MAGNUM_VK_EXPORT InstanceExtensionProperties enumerateInstanceExtensionProperties(const Containers::StringIterable& layers);
*/ MAGNUM_VK_EXPORT InstanceExtensionProperties enumerateInstanceExtensionProperties();
MAGNUM_VK_EXPORT InstanceExtensionProperties enumerateInstanceExtensionProperties(std::initializer_list<Containers::StringView> layers); #endif
}} }}

18
src/Magnum/Vk/Instance.cpp

@ -174,7 +174,7 @@ InstanceCreateInfo& InstanceCreateInfo::setApplicationInfo(const Containers::Str
return *this; return *this;
} }
InstanceCreateInfo& InstanceCreateInfo::addEnabledLayers(const Containers::ArrayView<const Containers::StringView> layers) { InstanceCreateInfo& InstanceCreateInfo::addEnabledLayers(const Containers::StringIterable& layers) {
if(layers.isEmpty()) return *this; if(layers.isEmpty()) return *this;
if(!_state) _state.emplace(); if(!_state) _state.emplace();
@ -204,11 +204,7 @@ InstanceCreateInfo& InstanceCreateInfo::addEnabledLayers(const Containers::Array
return *this; return *this;
} }
InstanceCreateInfo& InstanceCreateInfo::addEnabledLayers(const std::initializer_list<Containers::StringView> layers) { InstanceCreateInfo& InstanceCreateInfo::addEnabledExtensions(const Containers::StringIterable& extensions) {
return addEnabledLayers(Containers::arrayView(layers));
}
InstanceCreateInfo& InstanceCreateInfo::addEnabledExtensions(const Containers::ArrayView<const Containers::StringView> extensions) {
if(extensions.isEmpty()) return *this; if(extensions.isEmpty()) return *this;
if(!_state) _state.emplace(); if(!_state) _state.emplace();
@ -238,10 +234,6 @@ InstanceCreateInfo& InstanceCreateInfo::addEnabledExtensions(const Containers::A
return *this; return *this;
} }
InstanceCreateInfo& InstanceCreateInfo::addEnabledExtensions(const std::initializer_list<Containers::StringView> extensions) {
return addEnabledExtensions(Containers::arrayView(extensions));
}
InstanceCreateInfo& InstanceCreateInfo::addEnabledExtensions(const Containers::ArrayView<const InstanceExtension> extensions) { InstanceCreateInfo& InstanceCreateInfo::addEnabledExtensions(const Containers::ArrayView<const InstanceExtension> extensions) {
if(extensions.isEmpty()) return *this; if(extensions.isEmpty()) return *this;
if(!_state) _state.emplace(); if(!_state) _state.emplace();
@ -265,7 +257,7 @@ InstanceCreateInfo& InstanceCreateInfo::addEnabledExtensions(const std::initiali
return addEnabledExtensions(Containers::arrayView(extensions)); return addEnabledExtensions(Containers::arrayView(extensions));
} }
void Instance::wrap(const VkInstance handle, const Version version, const Containers::ArrayView<const Containers::StringView> enabledExtensions, const HandleFlags flags) { void Instance::wrap(const VkInstance handle, const Version version, const Containers::StringIterable& enabledExtensions, const HandleFlags flags) {
CORRADE_ASSERT(!_handle, CORRADE_ASSERT(!_handle,
"Vk::Instance::wrap(): instance already created", ); "Vk::Instance::wrap(): instance already created", );
@ -276,10 +268,6 @@ void Instance::wrap(const VkInstance handle, const Version version, const Contai
initialize(version, enabledExtensions, 0, nullptr); initialize(version, enabledExtensions, 0, nullptr);
} }
void Instance::wrap(const VkInstance handle, const Version version, const std::initializer_list<Containers::StringView> enabledExtensions, const HandleFlags flags) {
wrap(handle, version, Containers::arrayView(enabledExtensions), flags);
}
Instance::Instance(const InstanceCreateInfo& info): Instance{NoCreate} { Instance::Instance(const InstanceCreateInfo& info): Instance{NoCreate} {
create(info); create(info);
} }

5
src/Magnum/Vk/Instance.h

@ -248,10 +248,7 @@ class MAGNUM_VK_EXPORT Instance {
* behavior. * behavior.
* @see @ref release() * @see @ref release()
*/ */
void wrap(VkInstance handle, Version version, Containers::ArrayView<const Containers::StringView> enabledExtensions, HandleFlags flags = {}); void wrap(VkInstance handle, Version version, const Containers::StringIterable& enabledExtensions, HandleFlags flags = {});
/** @overload */
void wrap(VkInstance handle, Version version, std::initializer_list<Containers::StringView> enabledExtensions, HandleFlags flags = {});
/** /**
* @brief Constructor * @brief Constructor

8
src/Magnum/Vk/InstanceCreateInfo.h

@ -183,9 +183,7 @@ class MAGNUM_VK_EXPORT InstanceCreateInfo {
* @link Containers::Literals::operator""_s() @endlink literal to * @link Containers::Literals::operator""_s() @endlink literal to
* prevent that where possible. * prevent that where possible.
*/ */
InstanceCreateInfo& addEnabledLayers(Containers::ArrayView<const Containers::StringView> layers); InstanceCreateInfo& addEnabledLayers(const Containers::StringIterable& layers);
/** @overload */
InstanceCreateInfo& addEnabledLayers(std::initializer_list<Containers::StringView> layers);
/** /**
* @brief Add enabled instance extensions * @brief Add enabled instance extensions
@ -213,9 +211,7 @@ class MAGNUM_VK_EXPORT InstanceCreateInfo {
* @link Containers::Literals::operator""_s() @endlink literal to * @link Containers::Literals::operator""_s() @endlink literal to
* prevent that where possible. * prevent that where possible.
*/ */
InstanceCreateInfo& addEnabledExtensions(Containers::ArrayView<const Containers::StringView> extensions); InstanceCreateInfo& addEnabledExtensions(const Containers::StringIterable& extensions);
/** @overload */
InstanceCreateInfo& addEnabledExtensions(std::initializer_list<Containers::StringView> extension);
/** @overload */ /** @overload */
InstanceCreateInfo& addEnabledExtensions(Containers::ArrayView<const InstanceExtension> extensions); InstanceCreateInfo& addEnabledExtensions(Containers::ArrayView<const InstanceExtension> extensions);
/** @overload */ /** @overload */

1
src/Magnum/Vk/Test/DevicePropertiesVkTest.cpp

@ -27,6 +27,7 @@
#include <Corrade/Containers/Array.h> #include <Corrade/Containers/Array.h>
#include <Corrade/Containers/Optional.h> #include <Corrade/Containers/Optional.h>
#include <Corrade/Containers/StringStl.h> #include <Corrade/Containers/StringStl.h>
#include <Corrade/Containers/StringIterable.h>
#include <Corrade/Containers/StringView.h> #include <Corrade/Containers/StringView.h>
#include <Corrade/TestSuite/Compare/Numeric.h> #include <Corrade/TestSuite/Compare/Numeric.h>
#include <Corrade/Utility/DebugStl.h> #include <Corrade/Utility/DebugStl.h>

4
src/Magnum/Vk/Test/DeviceVkTest.cpp

@ -26,6 +26,7 @@
#include <sstream> #include <sstream>
#include <Corrade/Containers/Array.h> #include <Corrade/Containers/Array.h>
#include <Corrade/Containers/Optional.h> #include <Corrade/Containers/Optional.h>
#include <Corrade/Containers/StringIterable.h>
#include <Corrade/Containers/StringStl.h> #include <Corrade/Containers/StringStl.h>
#include <Corrade/TestSuite/Compare/Numeric.h> #include <Corrade/TestSuite/Compare/Numeric.h>
#include <Corrade/Utility/DebugStl.h> #include <Corrade/Utility/DebugStl.h>
@ -563,8 +564,7 @@ void DeviceVkTest::createInfoRvalue() {
rawQueueInfo.queueCount = 1; rawQueueInfo.queueCount = 1;
DeviceCreateInfo&& info = DeviceCreateInfo{pickDevice(instance())} DeviceCreateInfo&& info = DeviceCreateInfo{pickDevice(instance())}
.addEnabledExtensions(Containers::ArrayView<const Containers::StringView>{}) .addEnabledExtensions(Containers::StringIterable{})
.addEnabledExtensions(std::initializer_list<Containers::StringView>{})
.addEnabledExtensions(Containers::ArrayView<const Extension>{}) .addEnabledExtensions(Containers::ArrayView<const Extension>{})
.addEnabledExtensions(std::initializer_list<Extension>{}) .addEnabledExtensions(std::initializer_list<Extension>{})
.addEnabledExtensions<>() .addEnabledExtensions<>()

1
src/Magnum/Vk/Test/ExtensionPropertiesVkTest.cpp

@ -24,6 +24,7 @@
*/ */
#include <sstream> #include <sstream>
#include <Corrade/Containers/StringIterable.h>
#include <Corrade/Containers/StringStl.h> #include <Corrade/Containers/StringStl.h>
#include <Corrade/TestSuite/Tester.h> #include <Corrade/TestSuite/Tester.h>
#include <Corrade/TestSuite/Compare/Numeric.h> #include <Corrade/TestSuite/Compare/Numeric.h>

1
src/Magnum/Vk/Test/InstanceVkTest.cpp

@ -25,6 +25,7 @@
#include <sstream> #include <sstream>
#include <Corrade/Containers/Array.h> #include <Corrade/Containers/Array.h>
#include <Corrade/Containers/StringIterable.h>
#include <Corrade/Containers/StringStl.h> #include <Corrade/Containers/StringStl.h>
#include <Corrade/TestSuite/Tester.h> #include <Corrade/TestSuite/Tester.h>
#include <Corrade/TestSuite/Compare/Numeric.h> #include <Corrade/TestSuite/Compare/Numeric.h>

Loading…
Cancel
Save