Browse Source

Vk: make room for mapping vertex formats to a VkFormat.

pull/275/head
Vladimír Vondruš 6 years ago
parent
commit
41cf29cff6
  1. 24
      src/Magnum/Vk/Enums.cpp
  2. 0
      src/Magnum/Vk/Implementation/compressedPixelFormatMapping.hpp
  3. 0
      src/Magnum/Vk/Implementation/pixelFormatMapping.hpp
  4. 52
      src/Magnum/Vk/Test/EnumsTest.cpp

24
src/Magnum/Vk/Enums.cpp

@ -54,18 +54,18 @@ constexpr VkIndexType IndexTypeMapping[]{
#ifndef DOXYGEN_GENERATING_OUTPUT /* It gets *really* confused */
static_assert(VK_FORMAT_UNDEFINED == 0, "VK_FORMAT_UNDEFINED is assumed to be 0");
constexpr VkFormat FormatMapping[] {
constexpr VkFormat PixelFormatMapping[] {
#define _c(input, format) VK_FORMAT_ ## format,
#define _s(input) {},
#include "Magnum/Vk/Implementation/formatMapping.hpp"
#include "Magnum/Vk/Implementation/pixelFormatMapping.hpp"
#undef _s
#undef _c
};
constexpr VkFormat CompressedFormatMapping[] {
constexpr VkFormat CompressedPixelFormatMapping[] {
#define _c(input, format) VK_FORMAT_ ## format,
#define _s(input) {},
#include "Magnum/Vk/Implementation/compressedFormatMapping.hpp"
#include "Magnum/Vk/Implementation/compressedPixelFormatMapping.hpp"
#undef _s
#undef _c
};
@ -126,27 +126,27 @@ bool hasVkFormat(const Magnum::PixelFormat format) {
if(isPixelFormatImplementationSpecific(format))
return true;
CORRADE_ASSERT(UnsignedInt(format) - 1 < Containers::arraySize(FormatMapping),
CORRADE_ASSERT(UnsignedInt(format) - 1 < Containers::arraySize(PixelFormatMapping),
"Vk::hasVkFormat(): invalid format" << format, {});
return UnsignedInt(FormatMapping[UnsignedInt(format) - 1]);
return UnsignedInt(PixelFormatMapping[UnsignedInt(format) - 1]);
}
bool hasVkFormat(const Magnum::CompressedPixelFormat format) {
if(isCompressedPixelFormatImplementationSpecific(format))
return true;
CORRADE_ASSERT(UnsignedInt(format) - 1 < Containers::arraySize(CompressedFormatMapping),
CORRADE_ASSERT(UnsignedInt(format) - 1 < Containers::arraySize(CompressedPixelFormatMapping),
"Vk::hasVkFormat(): invalid format" << format, {});
return UnsignedInt(CompressedFormatMapping[UnsignedInt(format) - 1]);
return UnsignedInt(CompressedPixelFormatMapping[UnsignedInt(format) - 1]);
}
VkFormat vkFormat(const Magnum::PixelFormat format) {
if(isPixelFormatImplementationSpecific(format))
return pixelFormatUnwrap<VkFormat>(format);
CORRADE_ASSERT(UnsignedInt(format) - 1 < Containers::arraySize(FormatMapping),
CORRADE_ASSERT(UnsignedInt(format) - 1 < Containers::arraySize(PixelFormatMapping),
"Vk::vkFormat(): invalid format" << format, {});
const VkFormat out = FormatMapping[UnsignedInt(format) - 1];
const VkFormat out = PixelFormatMapping[UnsignedInt(format) - 1];
CORRADE_ASSERT(UnsignedInt(out),
"Vk::vkFormat(): unsupported format" << format, {});
return out;
@ -156,9 +156,9 @@ VkFormat vkFormat(const Magnum::CompressedPixelFormat format) {
if(isCompressedPixelFormatImplementationSpecific(format))
return compressedPixelFormatUnwrap<VkFormat>(format);
CORRADE_ASSERT(UnsignedInt(format) - 1 < Containers::arraySize(CompressedFormatMapping),
CORRADE_ASSERT(UnsignedInt(format) - 1 < Containers::arraySize(CompressedPixelFormatMapping),
"Vk::vkFormat(): invalid format" << format, {});
const VkFormat out = CompressedFormatMapping[UnsignedInt(format) - 1];
const VkFormat out = CompressedPixelFormatMapping[UnsignedInt(format) - 1];
CORRADE_ASSERT(UnsignedInt(out),
"Vk::vkFormat(): unsupported format" << format, {});
return out;

0
src/Magnum/Vk/Implementation/compressedFormatMapping.hpp → src/Magnum/Vk/Implementation/compressedPixelFormatMapping.hpp

0
src/Magnum/Vk/Implementation/formatMapping.hpp → src/Magnum/Vk/Implementation/pixelFormatMapping.hpp

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

@ -47,15 +47,15 @@ struct EnumsTest: TestSuite::Tester {
void mapVkIndexTypeUnsupported();
void mapVkIndexTypeInvalid();
void mapVkFormat();
void mapVkFormatImplementationSpecific();
void mapVkFormatUnsupported();
void mapVkFormatInvalid();
void mapVkFormatPixelFormat();
void mapVkFormatPixelFormatImplementationSpecific();
void mapVkFormatPixelFormatUnsupported();
void mapVkFormatPixelFormatInvalid();
void mapVkFormatCompressed();
void mapVkFormatCompressedImplementationSpecific();
void mapVkFormatCompressedUnsupported();
void mapVkFormatCompressedInvalid();
void mapVkFormatCompressedPixelFormat();
void mapVkFormatCompressedPixelFormatImplementationSpecific();
void mapVkFormatCompressedPixelFormatUnsupported();
void mapVkFormatCompressedPixelFormatInvalid();
void mapVkFilter();
void mapVkFilterInvalid();
@ -78,15 +78,15 @@ EnumsTest::EnumsTest() {
&EnumsTest::mapVkIndexTypeUnsupported,
&EnumsTest::mapVkIndexTypeInvalid,
&EnumsTest::mapVkFormat,
&EnumsTest::mapVkFormatImplementationSpecific,
&EnumsTest::mapVkFormatUnsupported,
&EnumsTest::mapVkFormatInvalid,
&EnumsTest::mapVkFormatPixelFormat,
&EnumsTest::mapVkFormatPixelFormatImplementationSpecific,
&EnumsTest::mapVkFormatPixelFormatUnsupported,
&EnumsTest::mapVkFormatPixelFormatInvalid,
&EnumsTest::mapVkFormatCompressed,
&EnumsTest::mapVkFormatCompressedImplementationSpecific,
&EnumsTest::mapVkFormatCompressedUnsupported,
&EnumsTest::mapVkFormatCompressedInvalid,
&EnumsTest::mapVkFormatCompressedPixelFormat,
&EnumsTest::mapVkFormatCompressedPixelFormatImplementationSpecific,
&EnumsTest::mapVkFormatCompressedPixelFormatUnsupported,
&EnumsTest::mapVkFormatCompressedPixelFormatInvalid,
&EnumsTest::mapVkFilter,
&EnumsTest::mapVkFilterInvalid,
@ -173,7 +173,7 @@ void EnumsTest::mapVkIndexTypeInvalid() {
"Vk::vkIndexType(): invalid type MeshIndexType(0x123)\n");
}
void EnumsTest::mapVkFormat() {
void EnumsTest::mapVkFormatPixelFormat() {
/* Touchstone verification */
CORRADE_VERIFY(hasVkFormat(Magnum::PixelFormat::RGBA8Unorm));
CORRADE_COMPARE(vkFormat(Magnum::PixelFormat::RGBA8Unorm), VK_FORMAT_R8G8B8A8_UNORM);
@ -217,7 +217,7 @@ void EnumsTest::mapVkFormat() {
++nextHandled; \
continue; \
}
#include "Magnum/Vk/Implementation/formatMapping.hpp"
#include "Magnum/Vk/Implementation/pixelFormatMapping.hpp"
#undef _s
#undef _c
}
@ -234,13 +234,13 @@ void EnumsTest::mapVkFormat() {
CORRADE_COMPARE(firstUnhandled, 0xffff);
}
void EnumsTest::mapVkFormatImplementationSpecific() {
void EnumsTest::mapVkFormatPixelFormatImplementationSpecific() {
CORRADE_VERIFY(hasVkFormat(Magnum::pixelFormatWrap(VK_FORMAT_A8B8G8R8_SINT_PACK32)));
CORRADE_COMPARE(vkFormat(Magnum::pixelFormatWrap(VK_FORMAT_A8B8G8R8_SINT_PACK32)),
VK_FORMAT_A8B8G8R8_SINT_PACK32);
}
void EnumsTest::mapVkFormatUnsupported() {
void EnumsTest::mapVkFormatPixelFormatUnsupported() {
#if 1
CORRADE_SKIP("All pixel formats are supported.");
#else
@ -252,7 +252,7 @@ void EnumsTest::mapVkFormatUnsupported() {
#endif
}
void EnumsTest::mapVkFormatInvalid() {
void EnumsTest::mapVkFormatPixelFormatInvalid() {
std::ostringstream out;
Error redirectError{&out};
@ -267,7 +267,7 @@ void EnumsTest::mapVkFormatInvalid() {
"Vk::vkFormat(): invalid format PixelFormat(0x123)\n");
}
void EnumsTest::mapVkFormatCompressed() {
void EnumsTest::mapVkFormatCompressedPixelFormat() {
/* Touchstone verification */
CORRADE_VERIFY(hasVkFormat(Magnum::CompressedPixelFormat::Bc1RGBAUnorm));
CORRADE_COMPARE(vkFormat(Magnum::CompressedPixelFormat::Bc1RGBAUnorm), VK_FORMAT_BC1_RGBA_UNORM_BLOCK);
@ -311,7 +311,7 @@ void EnumsTest::mapVkFormatCompressed() {
++nextHandled; \
continue; \
}
#include "Magnum/Vk/Implementation/compressedFormatMapping.hpp"
#include "Magnum/Vk/Implementation/compressedPixelFormatMapping.hpp"
#undef _s
#undef _c
}
@ -328,13 +328,13 @@ void EnumsTest::mapVkFormatCompressed() {
CORRADE_COMPARE(firstUnhandled, 0xffff);
}
void EnumsTest::mapVkFormatCompressedImplementationSpecific() {
void EnumsTest::mapVkFormatCompressedPixelFormatImplementationSpecific() {
CORRADE_VERIFY(hasVkFormat(Magnum::compressedPixelFormatWrap(VK_FORMAT_ASTC_10x6_UNORM_BLOCK)));
CORRADE_COMPARE(vkFormat(Magnum::compressedPixelFormatWrap(VK_FORMAT_ASTC_10x6_UNORM_BLOCK)),
VK_FORMAT_ASTC_10x6_UNORM_BLOCK);
}
void EnumsTest::mapVkFormatCompressedUnsupported() {
void EnumsTest::mapVkFormatCompressedPixelFormatUnsupported() {
CORRADE_VERIFY(!hasVkFormat(Magnum::CompressedPixelFormat::Astc3x3x3RGBAUnorm));
std::ostringstream out;
@ -343,7 +343,7 @@ void EnumsTest::mapVkFormatCompressedUnsupported() {
CORRADE_COMPARE(out.str(), "Vk::vkFormat(): unsupported format CompressedPixelFormat::Astc3x3x3RGBAUnorm\n");
}
void EnumsTest::mapVkFormatCompressedInvalid() {
void EnumsTest::mapVkFormatCompressedPixelFormatInvalid() {
std::ostringstream out;
Error redirectError{&out};

Loading…
Cancel
Save