X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fvertexformat_backend.cpp;fp=source%2Fbackends%2Fvulkan%2Fvertexformat_backend.cpp;h=8a962f557589ca9af5f4fdecbc6294250692c2de;hb=99ca354f18119f82f1adeca100cd665a8f640317;hp=0000000000000000000000000000000000000000;hpb=4cd245dafe6a7ee5c93edca5aee2d146f1155309;p=libs%2Fgl.git diff --git a/source/backends/vulkan/vertexformat_backend.cpp b/source/backends/vulkan/vertexformat_backend.cpp new file mode 100644 index 00000000..8a962f55 --- /dev/null +++ b/source/backends/vulkan/vertexformat_backend.cpp @@ -0,0 +1,63 @@ +#include "vertexformat.h" +#include "vertexformat_backend.h" +#include "vulkan.h" + +using namespace std; + +namespace Msp { +namespace GL { + +unsigned get_vulkan_attribute_format(VertexAttribute a) +{ + switch(a&0x1FF) + { + case 0x011: return VK_FORMAT_R8_UNORM; + case 0x012: return VK_FORMAT_R8G8_UNORM; + case 0x013: return VK_FORMAT_R8G8B8_UNORM; + case 0x014: return VK_FORMAT_R8G8B8A8_UNORM; + case 0x019: return VK_FORMAT_R8_UINT; + case 0x01A: return VK_FORMAT_R8G8_UINT; + case 0x01B: return VK_FORMAT_R8G8B8_UINT; + case 0x01C: return VK_FORMAT_R8G8B8A8_UINT; + case 0x021: return VK_FORMAT_R16_UNORM; + case 0x022: return VK_FORMAT_R16G16_UNORM; + case 0x023: return VK_FORMAT_R16G16B16_UNORM; + case 0x024: return VK_FORMAT_R16G16B16A16_UNORM; + case 0x029: return VK_FORMAT_R16_UINT; + case 0x02A: return VK_FORMAT_R16G16_UINT; + case 0x02B: return VK_FORMAT_R16G16B16_UINT; + case 0x02C: return VK_FORMAT_R16G16B16A16_UINT; + case 0x049: return VK_FORMAT_R32_UINT; + case 0x04A: return VK_FORMAT_R32G32_UINT; + case 0x04B: return VK_FORMAT_R32G32B32_UINT; + case 0x04C: return VK_FORMAT_R32G32B32A32_UINT; + case 0x091: return VK_FORMAT_R8_SNORM; + case 0x092: return VK_FORMAT_R8G8_SNORM; + case 0x093: return VK_FORMAT_R8G8B8_SNORM; + case 0x094: return VK_FORMAT_R8G8B8A8_SNORM; + case 0x099: return VK_FORMAT_R8_SINT; + case 0x09A: return VK_FORMAT_R8G8_SINT; + case 0x09B: return VK_FORMAT_R8G8B8_SINT; + case 0x09C: return VK_FORMAT_R8G8B8A8_SINT; + case 0x0A1: return VK_FORMAT_R16_SNORM; + case 0x0A2: return VK_FORMAT_R16G16_SNORM; + case 0x0A3: return VK_FORMAT_R16G16B16_SNORM; + case 0x0A4: return VK_FORMAT_R16G16B16A16_SNORM; + case 0x0A9: return VK_FORMAT_R16_SINT; + case 0x0AA: return VK_FORMAT_R16G16_SINT; + case 0x0AB: return VK_FORMAT_R16G16B16_SINT; + case 0x0AC: return VK_FORMAT_R16G16B16A16_SINT; + case 0x0C9: return VK_FORMAT_R32_SINT; + case 0x0CA: return VK_FORMAT_R32G32_SINT; + case 0x0CB: return VK_FORMAT_R32G32B32_SINT; + case 0x0CC: return VK_FORMAT_R32G32B32A32_SINT; + case 0x1C1: return VK_FORMAT_R32_SFLOAT; + case 0x1C2: return VK_FORMAT_R32G32_SFLOAT; + case 0x1C3: return VK_FORMAT_R32G32B32_SFLOAT; + case 0x1C4: return VK_FORMAT_R32G32B32A32_SFLOAT; + default: throw invalid_argument("get_vulkan_attribute_format"); + } +} + +} // namespace GL +} // namespace Msp