Files
Seele/src/Engine/Graphics/Vulkan/VulkanGraphicsEnums.cpp
T

171 lines
5.6 KiB
C++

#include "VulkanGraphicsEnums.h"
using namespace Seele::Vulkan;
using namespace Seele::Gfx;
VkDescriptorType cast(const Seele::Gfx::SeDescriptorType& descriptorType)
{
switch (descriptorType)
{
case SE_DESCRIPTOR_TYPE_SAMPLER:
return VK_DESCRIPTOR_TYPE_SAMPLER;
case SE_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
return VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
case SE_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
return VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
case SE_DESCRIPTOR_TYPE_STORAGE_IMAGE:
return VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
case SE_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
return VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER;
case SE_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
return VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER;
case SE_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
return VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
case SE_DESCRIPTOR_TYPE_STORAGE_BUFFER:
return VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
case SE_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
return VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
case SE_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
return VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC;
case SE_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
return VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT;
#ifdef USE_EXTENSIONS
case SE_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT:
return VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT;
case SE_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:
return VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV;
#endif
default:
break;
}
return VK_DESCRIPTOR_TYPE_MAX_ENUM;
}
Seele::Gfx::SeDescriptorType cast(const VkDescriptorType& descriptorType)
{
switch (descriptorType)
{
case VK_DESCRIPTOR_TYPE_SAMPLER:
return SE_DESCRIPTOR_TYPE_SAMPLER;
case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
return SE_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
return SE_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
return SE_DESCRIPTOR_TYPE_STORAGE_IMAGE;
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
return SE_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER;
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
return SE_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER;
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
return SE_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
return SE_DESCRIPTOR_TYPE_STORAGE_BUFFER;
case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
return SE_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
return SE_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC;
case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
return SE_DESCRIPTOR_TYPE_INPUT_ATTACHMENT;
#ifdef USE_EXTENSIONS
case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT:
return SE_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT;
case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:
return SE_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV;
#endif
default:
break;
}
return SE_DESCRIPTOR_TYPE_MAX_ENUM;
}
VkShaderStageFlagBits cast(const Seele::Gfx::SeShaderStageFlagBits& stage)
{
switch (stage)
{
case SE_SHADER_STAGE_VERTEX_BIT:
return VK_SHADER_STAGE_VERTEX_BIT;
case SE_SHADER_STAGE_TESSELLATION_CONTROL_BIT:
return VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT;
case SE_SHADER_STAGE_TESSELLATION_EVALUATION_BIT:
return VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT;
case SE_SHADER_STAGE_GEOMETRY_BIT:
return VK_SHADER_STAGE_GEOMETRY_BIT;
case SE_SHADER_STAGE_FRAGMENT_BIT:
return VK_SHADER_STAGE_FRAGMENT_BIT;
case SE_SHADER_STAGE_COMPUTE_BIT:
return VK_SHADER_STAGE_COMPUTE_BIT;
case SE_SHADER_STAGE_ALL_GRAPHICS:
return VK_SHADER_STAGE_ALL_GRAPHICS;
case SE_SHADER_STAGE_ALL:
return VK_SHADER_STAGE_ALL;
#ifdef USE_EXTENSIONS
case SE_SHADER_STAGE_RAYGEN_BIT_NV:
return VK_SHADER_STAGE_RAYGEN_BIT_NV;
case SE_SHADER_STAGE_ANY_HIT_BIT_NV:
return VK_SHADER_STAGE_ANY_HIT_BIT_NV;
case SE_SHADER_STAGE_CLOSEST_HIT_BIT_NV:
return VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV;
case SE_SHADER_STAGE_MISS_BIT_NV:
return VK_SHADER_STAGE_MISS_BIT_NV;
case SE_SHADER_STAGE_INTERSECTION_BIT_NV:
return VK_SHADER_STAGE_INTERSECTION_BIT_NV;
case SE_SHADER_STAGE_CALLABLE_BIT_NV:
return VK_SHADER_STAGE_CALLABLE_BIT_NV;
case SE_SHADER_STAGE_TASK_BIT_NV:
return VK_SHADER_STAGE_TASK_BIT_NV;
case SE_SHADER_STAGE_MESH_BIT_NV:
return VK_SHADER_STAGE_MESH_BIT_NV;
#endif
default:
break;
}
return VK_SHADER_STAGE_ALL;
}
Seele::Gfx::SeShaderStageFlagBits cast(const VkShaderStageFlagBits& stage)
{
switch (stage)
{
case VK_SHADER_STAGE_VERTEX_BIT:
return SE_SHADER_STAGE_VERTEX_BIT;
case VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT:
return SE_SHADER_STAGE_TESSELLATION_CONTROL_BIT;
case VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT:
return SE_SHADER_STAGE_TESSELLATION_EVALUATION_BIT;
case VK_SHADER_STAGE_GEOMETRY_BIT:
return SE_SHADER_STAGE_GEOMETRY_BIT;
case VK_SHADER_STAGE_FRAGMENT_BIT:
return SE_SHADER_STAGE_FRAGMENT_BIT;
case VK_SHADER_STAGE_COMPUTE_BIT:
return SE_SHADER_STAGE_COMPUTE_BIT;
case VK_SHADER_STAGE_ALL_GRAPHICS:
return SE_SHADER_STAGE_ALL_GRAPHICS;
case VK_SHADER_STAGE_ALL:
return SE_SHADER_STAGE_ALL;
#ifdef USE_EXTENSIONS
case VK_SHADER_STAGE_RAYGEN_BIT_NV:
return SE_SHADER_STAGE_RAYGEN_BIT_NV;
case VK_SHADER_STAGE_ANY_HIT_BIT_NV:
return SE_SHADER_STAGE_ANY_HIT_BIT_NV;
case VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV:
return SE_SHADER_STAGE_CLOSEST_HIT_BIT_NV;
case VK_SHADER_STAGE_MISS_BIT_NV:
return SE_SHADER_STAGE_MISS_BIT_NV;
case VK_SHADER_STAGE_INTERSECTION_BIT_NV:
return SE_SHADER_STAGE_INTERSECTION_BIT_NV;
case VK_SHADER_STAGE_CALLABLE_BIT_NV:
return SE_SHADER_STAGE_CALLABLE_BIT_NV;
case VK_SHADER_STAGE_TASK_BIT_NV:
return SE_SHADER_STAGE_TASK_BIT_NV;
case VK_SHADER_STAGE_MESH_BIT_NV:
return SE_SHADER_STAGE_MESH_BIT_NV;
#endif
default:
break;
}
return SE_SHADER_STAGE_ALL;
}