dd0d232c97
Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
48 lines
3.0 KiB
C
48 lines
3.0 KiB
C
#pragma once
|
|
|
|
#include "evk.h"
|
|
|
|
const static VkFormat evkToVkFmtLUT[][5] = {
|
|
[EVK_FMT_INVALID] = { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED , VK_FORMAT_UNDEFINED , VK_FORMAT_UNDEFINED , VK_FORMAT_UNDEFINED },
|
|
[EVK_FMT_FLOAT32] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32G32_SFLOAT, VK_FORMAT_R32G32B32_SFLOAT, VK_FORMAT_R32G32B32A32_SFLOAT },
|
|
[EVK_FMT_UINT32] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R32_UINT , VK_FORMAT_R32G32_UINT , VK_FORMAT_R32G32B32_UINT , VK_FORMAT_R32G32B32A32_UINT },
|
|
[EVK_FMT_SINT32] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R32_SINT , VK_FORMAT_R32G32_SINT , VK_FORMAT_R32G32B32_SINT , VK_FORMAT_R32G32B32A32_SINT },
|
|
[EVK_FMT_FLOAT16] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R16_SFLOAT, VK_FORMAT_R16G16_SFLOAT, VK_FORMAT_R16G16B16_SFLOAT, VK_FORMAT_R16G16B16A16_SFLOAT },
|
|
[EVK_FMT_UNORM16] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R16_UNORM , VK_FORMAT_R16G16_UNORM , VK_FORMAT_R16G16B16_UNORM , VK_FORMAT_R16G16B16A16_UNORM },
|
|
[EVK_FMT_SNORM16] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R16_SNORM , VK_FORMAT_R16G16_SNORM , VK_FORMAT_R16G16B16_SNORM , VK_FORMAT_R16G16B16A16_SNORM },
|
|
[EVK_FMT_UINT16] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R16_UINT , VK_FORMAT_R16G16_UINT , VK_FORMAT_R16G16B16_UINT , VK_FORMAT_R16G16B16A16_UINT },
|
|
[EVK_FMT_SINT16] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R16_SINT , VK_FORMAT_R16G16_SINT , VK_FORMAT_R16G16B16_SINT , VK_FORMAT_R16G16B16A16_SINT },
|
|
[EVK_FMT_UNORM8] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R8_UNORM , VK_FORMAT_R8G8_UNORM , VK_FORMAT_R8G8B8_UNORM , VK_FORMAT_R8G8B8A8_UNORM },
|
|
[EVK_FMT_SNORM8] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R8_SNORM , VK_FORMAT_R8G8_SNORM , VK_FORMAT_R8G8B8_SNORM , VK_FORMAT_R8G8B8A8_SNORM },
|
|
[EVK_FMT_UINT8] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R8_UINT , VK_FORMAT_R8G8_UINT , VK_FORMAT_R8G8B8_UINT , VK_FORMAT_R8G8B8A8_UINT },
|
|
[EVK_FMT_SINT8] = { VK_FORMAT_UNDEFINED, VK_FORMAT_R8_SINT , VK_FORMAT_R8G8_SINT , VK_FORMAT_R8G8B8_SINT , VK_FORMAT_R8G8B8A8_SINT },
|
|
};
|
|
|
|
const static u32 evkFmtToSizeLUT[][5] = {
|
|
[EVK_FMT_INVALID] = { 0, 0, 0, 0, 0 },
|
|
[EVK_FMT_FLOAT32] = { 0, 4, 8, 12, 16 },
|
|
[EVK_FMT_UINT32] = { 0, 4, 8, 12, 16 },
|
|
[EVK_FMT_SINT32] = { 0, 4, 8, 12, 16 },
|
|
[EVK_FMT_FLOAT16] = { 0, 2, 4, 6, 8 },
|
|
[EVK_FMT_UNORM16] = { 0, 2, 4, 6, 8 },
|
|
[EVK_FMT_SNORM16] = { 0, 2, 4, 6, 8 },
|
|
[EVK_FMT_UINT16] = { 0, 2, 4, 6, 8 },
|
|
[EVK_FMT_SINT16] = { 0, 2, 4, 6, 8 },
|
|
[EVK_FMT_UNORM8] = { 0, 1, 2, 3, 4 },
|
|
[EVK_FMT_SNORM8] = { 0, 1, 2, 3, 4 },
|
|
[EVK_FMT_UINT8] = { 0, 1, 2, 3, 4 },
|
|
[EVK_FMT_SINT8] = { 0, 1, 2, 3, 4 },
|
|
};
|
|
|
|
static EV_FORCEINLINE VkFormat evkVertexAttributeGetVkFormat(evkVertexAttribute attr)
|
|
{
|
|
if(attr.dim > 4) assert(!"Unsupported Vertex Attribute Dimension");
|
|
return evkToVkFmtLUT[attr.fmt][attr.dim];
|
|
}
|
|
|
|
static EV_FORCEINLINE u32 evkVertexAttributeGetSize(evkVertexAttribute attr)
|
|
{
|
|
if(attr.dim > 4) assert(!"Unsupported Vertex Attribute Dimension");
|
|
return evkFmtToSizeLUT[attr.fmt][attr.dim];
|
|
}
|