Browse Source

Vk: recognize SamplerWrapping::MirrorClampToEdge.

It's a new extension in Vulkan 1.2.
pull/234/head
Vladimír Vondruš 6 years ago
parent
commit
144b6229b2
  1. 5
      doc/changelog.dox
  2. 4
      src/Magnum/Sampler.h
  3. 2
      src/Magnum/Vk/Enums.cpp
  4. 6
      src/Magnum/Vk/Enums.h
  5. 6
      src/Magnum/Vk/Test/EnumsTest.cpp

5
doc/changelog.dox

@ -193,6 +193,11 @@ See also:
- @ref magnum-imageconverter "magnum-imageconverter" has a new `--in-place` - @ref magnum-imageconverter "magnum-imageconverter" has a new `--in-place`
option for converting images in-place option for converting images in-place
@subsubsection changelog-latest-changes-vk Vk library
- @ref Vk::hasVkSamplerAddressMode() and @ref Vk::vkSamplerAddressMode() now
recognizes @ref SamplerWrapping::MirrorClampToEdge
@subsection changelog-latest-buildsystem Build system @subsection changelog-latest-buildsystem Build system
- Fixed compilation of the @ref GL library on macOS with ANGLE --- new code - Fixed compilation of the @ref GL library on macOS with ANGLE --- new code

4
src/Magnum/Sampler.h

@ -169,8 +169,8 @@ enum class SamplerWrapping: UnsignedInt {
* Mirror the texture once in negative coordinates and clamp to * Mirror the texture once in negative coordinates and clamp to
* edge after that. * edge after that.
* *
* Corresponds to @ref GL::SamplerWrapping::MirrorClampToEdge. Not * Corresponds to @ref GL::SamplerWrapping::MirrorClampToEdge. /
* available on Vulkan. * @val_vk_keyword{SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,SamplerAddressMode}.
*/ */
MirrorClampToEdge MirrorClampToEdge
}; };

2
src/Magnum/Vk/Enums.cpp

@ -102,7 +102,7 @@ constexpr VkSamplerAddressMode SamplerAddressModeMapping[]{
VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
VkSamplerAddressMode(~UnsignedInt{}), VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
}; };
} }

6
src/Magnum/Vk/Enums.h

@ -209,10 +209,8 @@ MAGNUM_VK_EXPORT VkSamplerMipmapMode vkSamplerMipmapMode(Magnum::SamplerMipmap m
/** /**
@brief Check availability of a generic sampler wrapping mode @brief Check availability of a generic sampler wrapping mode
Some Vulkan targets don't support all generic sampler wrapping modes (for Returns @cpp false @ce if Vulkan doesn't support such wrapping, @cpp true @ce
example the @ref SamplerWrapping::MirrorClampToEdge). Returns @cpp false @ce if otherwise. The @p wrapping value is expected to be valid.
current target can't support such format, @cpp true @ce otherwise. The
@p wrapping value is expected to be valid.
@note Support of some formats depends on presence of a particular Vulkan @note Support of some formats depends on presence of a particular Vulkan
extension. Such check is outside of the scope of this function and you are extension. Such check is outside of the scope of this function and you are

6
src/Magnum/Vk/Test/EnumsTest.cpp

@ -624,14 +624,16 @@ void EnumsTest::mapVkSamplerAddressModeUnsupported() {
CORRADE_SKIP("CORRADE_NO_ASSERT defined, can't test assertions"); CORRADE_SKIP("CORRADE_NO_ASSERT defined, can't test assertions");
#endif #endif
#if 1
CORRADE_SKIP("All sampler address modes are supported.");
#else
CORRADE_VERIFY(!hasVkSamplerAddressMode(Magnum::SamplerWrapping::MirrorClampToEdge)); CORRADE_VERIFY(!hasVkSamplerAddressMode(Magnum::SamplerWrapping::MirrorClampToEdge));
std::ostringstream out; std::ostringstream out;
{
Error redirectError{&out}; Error redirectError{&out};
vkSamplerAddressMode(Magnum::SamplerWrapping::MirrorClampToEdge); vkSamplerAddressMode(Magnum::SamplerWrapping::MirrorClampToEdge);
}
CORRADE_COMPARE(out.str(), CORRADE_COMPARE(out.str(),
"Vk::vkSamplerAddressMode(): unsupported wrapping SamplerWrapping::MirrorClampToEdge\n"); "Vk::vkSamplerAddressMode(): unsupported wrapping SamplerWrapping::MirrorClampToEdge\n");
#endif
} }
void EnumsTest::mapVkSamplerAddressModeInvalid() { void EnumsTest::mapVkSamplerAddressModeInvalid() {

Loading…
Cancel
Save