#include "Enums.h" using namespace Seele; using namespace Seele::Vulkan; using namespace Seele::Gfx; VkDescriptorType Seele::Vulkan::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 Seele::Vulkan::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 Seele::Vulkan::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 Seele::Vulkan::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; } VkFormat Seele::Vulkan::cast(const Seele::Gfx::SeFormat &format) { switch (format) { case SE_FORMAT_UNDEFINED: return VK_FORMAT_UNDEFINED; case SE_FORMAT_R4G4_UNORM_PACK8: return VK_FORMAT_R4G4_UNORM_PACK8; case SE_FORMAT_R4G4B4A4_UNORM_PACK16: return VK_FORMAT_R4G4B4A4_UNORM_PACK16; case SE_FORMAT_B4G4R4A4_UNORM_PACK16: return VK_FORMAT_B4G4R4A4_UNORM_PACK16; case SE_FORMAT_R5G6B5_UNORM_PACK16: return VK_FORMAT_R5G6B5_UNORM_PACK16; case SE_FORMAT_B5G6R5_UNORM_PACK16: return VK_FORMAT_B5G6R5_UNORM_PACK16; case SE_FORMAT_R5G5B5A1_UNORM_PACK16: return VK_FORMAT_R5G5B5A1_UNORM_PACK16; case SE_FORMAT_B5G5R5A1_UNORM_PACK16: return VK_FORMAT_B5G5R5A1_UNORM_PACK16; case SE_FORMAT_A1R5G5B5_UNORM_PACK16: return VK_FORMAT_A1R5G5B5_UNORM_PACK16; case SE_FORMAT_R8_UNORM: return VK_FORMAT_R8_UNORM; case SE_FORMAT_R8_SNORM: return VK_FORMAT_R8_SNORM; case SE_FORMAT_R8_USCALED: return VK_FORMAT_R8_USCALED; case SE_FORMAT_R8_SSCALED: return VK_FORMAT_R8_SSCALED; case SE_FORMAT_R8_UINT: return VK_FORMAT_R8_UINT; case SE_FORMAT_R8_SINT: return VK_FORMAT_R8_SINT; case SE_FORMAT_R8_SRGB: return VK_FORMAT_R8_SRGB; case SE_FORMAT_R8G8_UNORM: return VK_FORMAT_R8G8_UNORM; case SE_FORMAT_R8G8_SNORM: return VK_FORMAT_R8G8_SNORM; case SE_FORMAT_R8G8_USCALED: return VK_FORMAT_R8G8_USCALED; case SE_FORMAT_R8G8_SSCALED: return VK_FORMAT_R8G8_SSCALED; case SE_FORMAT_R8G8_UINT: return VK_FORMAT_R8G8_UINT; case SE_FORMAT_R8G8_SINT: return VK_FORMAT_R8G8_SINT; case SE_FORMAT_R8G8_SRGB: return VK_FORMAT_R8G8_SRGB; case SE_FORMAT_R8G8B8_UNORM: return VK_FORMAT_R8G8B8_UNORM; case SE_FORMAT_R8G8B8_SNORM: return VK_FORMAT_R8G8B8_SNORM; case SE_FORMAT_R8G8B8_USCALED: return VK_FORMAT_R8G8B8_USCALED; case SE_FORMAT_R8G8B8_SSCALED: return VK_FORMAT_R8G8B8_SSCALED; case SE_FORMAT_R8G8B8_UINT: return VK_FORMAT_R8G8B8_UINT; case SE_FORMAT_R8G8B8_SINT: return VK_FORMAT_R8G8B8_SINT; case SE_FORMAT_R8G8B8_SRGB: return VK_FORMAT_R8G8B8_SRGB; case SE_FORMAT_B8G8R8_UNORM: return VK_FORMAT_B8G8R8_UNORM; case SE_FORMAT_B8G8R8_SNORM: return VK_FORMAT_B8G8R8_SNORM; case SE_FORMAT_B8G8R8_USCALED: return VK_FORMAT_B8G8R8_USCALED; case SE_FORMAT_B8G8R8_SSCALED: return VK_FORMAT_B8G8R8_SSCALED; case SE_FORMAT_B8G8R8_UINT: return VK_FORMAT_B8G8R8_UINT; case SE_FORMAT_B8G8R8_SINT: return VK_FORMAT_B8G8R8_SINT; case SE_FORMAT_B8G8R8_SRGB: return VK_FORMAT_B8G8R8_SRGB; case SE_FORMAT_R8G8B8A8_UNORM: return VK_FORMAT_R8G8B8A8_UNORM; case SE_FORMAT_R8G8B8A8_SNORM: return VK_FORMAT_R8G8B8A8_SNORM; case SE_FORMAT_R8G8B8A8_USCALED: return VK_FORMAT_R8G8B8A8_USCALED; case SE_FORMAT_R8G8B8A8_SSCALED: return VK_FORMAT_R8G8B8A8_SSCALED; case SE_FORMAT_R8G8B8A8_UINT: return VK_FORMAT_R8G8B8A8_UINT; case SE_FORMAT_R8G8B8A8_SINT: return VK_FORMAT_R8G8B8A8_SINT; case SE_FORMAT_R8G8B8A8_SRGB: return VK_FORMAT_R8G8B8A8_SRGB; case SE_FORMAT_B8G8R8A8_UNORM: return VK_FORMAT_B8G8R8A8_UNORM; case SE_FORMAT_B8G8R8A8_SNORM: return VK_FORMAT_B8G8R8A8_SNORM; case SE_FORMAT_B8G8R8A8_USCALED: return VK_FORMAT_B8G8R8A8_USCALED; case SE_FORMAT_B8G8R8A8_SSCALED: return VK_FORMAT_B8G8R8A8_SSCALED; case SE_FORMAT_B8G8R8A8_UINT: return VK_FORMAT_B8G8R8A8_UINT; case SE_FORMAT_B8G8R8A8_SINT: return VK_FORMAT_B8G8R8A8_SINT; case SE_FORMAT_B8G8R8A8_SRGB: return VK_FORMAT_B8G8R8A8_SRGB; case SE_FORMAT_A8B8G8R8_UNORM_PACK32: return VK_FORMAT_A8B8G8R8_UNORM_PACK32; case SE_FORMAT_A8B8G8R8_SNORM_PACK32: return VK_FORMAT_A8B8G8R8_SNORM_PACK32; case SE_FORMAT_A8B8G8R8_USCALED_PACK32: return VK_FORMAT_A8B8G8R8_USCALED_PACK32; case SE_FORMAT_A8B8G8R8_SSCALED_PACK32: return VK_FORMAT_A8B8G8R8_SSCALED_PACK32; case SE_FORMAT_A8B8G8R8_UINT_PACK32: return VK_FORMAT_A8B8G8R8_UINT_PACK32; case SE_FORMAT_A8B8G8R8_SINT_PACK32: return VK_FORMAT_A8B8G8R8_SINT_PACK32; case SE_FORMAT_A8B8G8R8_SRGB_PACK32: return VK_FORMAT_A8B8G8R8_SRGB_PACK32; case SE_FORMAT_A2R10G10B10_UNORM_PACK32: return VK_FORMAT_A2R10G10B10_UNORM_PACK32; case SE_FORMAT_A2R10G10B10_SNORM_PACK32: return VK_FORMAT_A2R10G10B10_SNORM_PACK32; case SE_FORMAT_A2R10G10B10_USCALED_PACK32: return VK_FORMAT_A2R10G10B10_USCALED_PACK32; case SE_FORMAT_A2R10G10B10_SSCALED_PACK32: return VK_FORMAT_A2R10G10B10_SSCALED_PACK32; case SE_FORMAT_A2R10G10B10_UINT_PACK32: return VK_FORMAT_A2R10G10B10_UINT_PACK32; case SE_FORMAT_A2R10G10B10_SINT_PACK32: return VK_FORMAT_A2R10G10B10_SINT_PACK32; case SE_FORMAT_A2B10G10R10_UNORM_PACK32: return VK_FORMAT_A2B10G10R10_UNORM_PACK32; case SE_FORMAT_A2B10G10R10_SNORM_PACK32: return VK_FORMAT_A2B10G10R10_SNORM_PACK32; case SE_FORMAT_A2B10G10R10_USCALED_PACK32: return VK_FORMAT_A2B10G10R10_USCALED_PACK32; case SE_FORMAT_A2B10G10R10_SSCALED_PACK32: return VK_FORMAT_A2B10G10R10_SSCALED_PACK32; case SE_FORMAT_A2B10G10R10_UINT_PACK32: return VK_FORMAT_A2B10G10R10_UINT_PACK32; case SE_FORMAT_A2B10G10R10_SINT_PACK32: return VK_FORMAT_A2B10G10R10_SINT_PACK32; case SE_FORMAT_R16_UNORM: return VK_FORMAT_R16_UNORM; case SE_FORMAT_R16_SNORM: return VK_FORMAT_R16_SNORM; case SE_FORMAT_R16_USCALED: return VK_FORMAT_R16_USCALED; case SE_FORMAT_R16_SSCALED: return VK_FORMAT_R16_SSCALED; case SE_FORMAT_R16_UINT: return VK_FORMAT_R16_UINT; case SE_FORMAT_R16_SINT: return VK_FORMAT_R16_SINT; case SE_FORMAT_R16_SFLOAT: return VK_FORMAT_R16_SFLOAT; case SE_FORMAT_R16G16_UNORM: return VK_FORMAT_R16G16_UNORM; case SE_FORMAT_R16G16_SNORM: return VK_FORMAT_R16G16_SNORM; case SE_FORMAT_R16G16_USCALED: return VK_FORMAT_R16G16_USCALED; case SE_FORMAT_R16G16_SSCALED: return VK_FORMAT_R16G16_SSCALED; case SE_FORMAT_R16G16_UINT: return VK_FORMAT_R16G16_UINT; case SE_FORMAT_R16G16_SINT: return VK_FORMAT_R16G16_SINT; case SE_FORMAT_R16G16_SFLOAT: return VK_FORMAT_R16G16_SFLOAT; case SE_FORMAT_R16G16B16_UNORM: return VK_FORMAT_R16G16B16_UNORM; case SE_FORMAT_R16G16B16_SNORM: return VK_FORMAT_R16G16B16_SNORM; case SE_FORMAT_R16G16B16_USCALED: return VK_FORMAT_R16G16B16_USCALED; case SE_FORMAT_R16G16B16_SSCALED: return VK_FORMAT_R16G16B16_SSCALED; case SE_FORMAT_R16G16B16_UINT: return VK_FORMAT_R16G16B16_UINT; case SE_FORMAT_R16G16B16_SINT: return VK_FORMAT_R16G16B16_SINT; case SE_FORMAT_R16G16B16_SFLOAT: return VK_FORMAT_R16G16B16_SFLOAT; case SE_FORMAT_R16G16B16A16_UNORM: return VK_FORMAT_R16G16B16A16_UNORM; case SE_FORMAT_R16G16B16A16_SNORM: return VK_FORMAT_R16G16B16A16_SNORM; case SE_FORMAT_R16G16B16A16_USCALED: return VK_FORMAT_R16G16B16A16_USCALED; case SE_FORMAT_R16G16B16A16_SSCALED: return VK_FORMAT_R16G16B16A16_SSCALED; case SE_FORMAT_R16G16B16A16_UINT: return VK_FORMAT_R16G16B16A16_UINT; case SE_FORMAT_R16G16B16A16_SINT: return VK_FORMAT_R16G16B16A16_SINT; case SE_FORMAT_R16G16B16A16_SFLOAT: return VK_FORMAT_R16G16B16A16_SFLOAT; case SE_FORMAT_R32_UINT: return VK_FORMAT_R32_UINT; case SE_FORMAT_R32_SINT: return VK_FORMAT_R32_SINT; case SE_FORMAT_R32_SFLOAT: return VK_FORMAT_R32_SFLOAT; case SE_FORMAT_R32G32_UINT: return VK_FORMAT_R32G32_UINT; case SE_FORMAT_R32G32_SINT: return VK_FORMAT_R32G32_SINT; case SE_FORMAT_R32G32_SFLOAT: return VK_FORMAT_R32G32_SFLOAT; case SE_FORMAT_R32G32B32_UINT: return VK_FORMAT_R32G32B32_UINT; case SE_FORMAT_R32G32B32_SINT: return VK_FORMAT_R32G32B32_SINT; case SE_FORMAT_R32G32B32_SFLOAT: return VK_FORMAT_R32G32B32_SFLOAT; case SE_FORMAT_R32G32B32A32_UINT: return VK_FORMAT_R32G32B32A32_UINT; case SE_FORMAT_R32G32B32A32_SINT: return VK_FORMAT_R32G32B32A32_SINT; case SE_FORMAT_R32G32B32A32_SFLOAT: return VK_FORMAT_R32G32B32A32_SFLOAT; case SE_FORMAT_R64_UINT: return VK_FORMAT_R64_UINT; case SE_FORMAT_R64_SINT: return VK_FORMAT_R64_SINT; case SE_FORMAT_R64_SFLOAT: return VK_FORMAT_R64_SFLOAT; case SE_FORMAT_R64G64_UINT: return VK_FORMAT_R64G64_UINT; case SE_FORMAT_R64G64_SINT: return VK_FORMAT_R64G64_SINT; case SE_FORMAT_R64G64_SFLOAT: return VK_FORMAT_R64G64_SFLOAT; case SE_FORMAT_R64G64B64_UINT: return VK_FORMAT_R64G64B64_UINT; case SE_FORMAT_R64G64B64_SINT: return VK_FORMAT_R64G64B64_SINT; case SE_FORMAT_R64G64B64_SFLOAT: return VK_FORMAT_R64G64B64_SFLOAT; case SE_FORMAT_R64G64B64A64_UINT: return VK_FORMAT_R64G64B64A64_UINT; case SE_FORMAT_R64G64B64A64_SINT: return VK_FORMAT_R64G64B64A64_SINT; case SE_FORMAT_R64G64B64A64_SFLOAT: return VK_FORMAT_R64G64B64A64_SFLOAT; case SE_FORMAT_B10G11R11_UFLOAT_PACK32: return VK_FORMAT_B10G11R11_UFLOAT_PACK32; case SE_FORMAT_E5B9G9R9_UFLOAT_PACK32: return VK_FORMAT_E5B9G9R9_UFLOAT_PACK32; case SE_FORMAT_D16_UNORM: return VK_FORMAT_D16_UNORM; case SE_FORMAT_X8_D24_UNORM_PACK32: return VK_FORMAT_X8_D24_UNORM_PACK32; case SE_FORMAT_D32_SFLOAT: return VK_FORMAT_D32_SFLOAT; case SE_FORMAT_S8_UINT: return VK_FORMAT_S8_UINT; case SE_FORMAT_D16_UNORM_S8_UINT: return VK_FORMAT_D16_UNORM_S8_UINT; case SE_FORMAT_D24_UNORM_S8_UINT: return VK_FORMAT_D24_UNORM_S8_UINT; case SE_FORMAT_D32_SFLOAT_S8_UINT: return VK_FORMAT_D32_SFLOAT_S8_UINT; case SE_FORMAT_BC1_RGB_UNORM_BLOCK: return VK_FORMAT_BC1_RGB_UNORM_BLOCK; case SE_FORMAT_BC1_RGB_SRGB_BLOCK: return VK_FORMAT_BC1_RGB_SRGB_BLOCK; case SE_FORMAT_BC1_RGBA_UNORM_BLOCK: return VK_FORMAT_BC1_RGBA_UNORM_BLOCK; case SE_FORMAT_BC1_RGBA_SRGB_BLOCK: return VK_FORMAT_BC1_RGBA_SRGB_BLOCK; case SE_FORMAT_BC2_UNORM_BLOCK: return VK_FORMAT_BC2_UNORM_BLOCK; case SE_FORMAT_BC2_SRGB_BLOCK: return VK_FORMAT_BC2_SRGB_BLOCK; case SE_FORMAT_BC3_UNORM_BLOCK: return VK_FORMAT_BC3_UNORM_BLOCK; case SE_FORMAT_BC3_SRGB_BLOCK: return VK_FORMAT_BC3_SRGB_BLOCK; case SE_FORMAT_BC4_UNORM_BLOCK: return VK_FORMAT_BC4_UNORM_BLOCK; case SE_FORMAT_BC4_SNORM_BLOCK: return VK_FORMAT_BC4_SNORM_BLOCK; case SE_FORMAT_BC5_UNORM_BLOCK: return VK_FORMAT_BC5_UNORM_BLOCK; case SE_FORMAT_BC5_SNORM_BLOCK: return VK_FORMAT_BC5_SNORM_BLOCK; case SE_FORMAT_BC6H_UFLOAT_BLOCK: return VK_FORMAT_BC6H_UFLOAT_BLOCK; case SE_FORMAT_BC6H_SFLOAT_BLOCK: return VK_FORMAT_BC6H_SFLOAT_BLOCK; case SE_FORMAT_BC7_UNORM_BLOCK: return VK_FORMAT_BC7_UNORM_BLOCK; case SE_FORMAT_BC7_SRGB_BLOCK: return VK_FORMAT_BC7_SRGB_BLOCK; case SE_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: return VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK; case SE_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: return VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK; case SE_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: return VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK; case SE_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: return VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK; case SE_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: return VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK; case SE_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: return VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK; case SE_FORMAT_EAC_R11_UNORM_BLOCK: return VK_FORMAT_EAC_R11_UNORM_BLOCK; case SE_FORMAT_EAC_R11_SNORM_BLOCK: return VK_FORMAT_EAC_R11_SNORM_BLOCK; case SE_FORMAT_EAC_R11G11_UNORM_BLOCK: return VK_FORMAT_EAC_R11G11_UNORM_BLOCK; case SE_FORMAT_EAC_R11G11_SNORM_BLOCK: return VK_FORMAT_EAC_R11G11_SNORM_BLOCK; case SE_FORMAT_ASTC_4x4_UNORM_BLOCK: return VK_FORMAT_ASTC_4x4_UNORM_BLOCK; case SE_FORMAT_ASTC_4x4_SRGB_BLOCK: return VK_FORMAT_ASTC_4x4_SRGB_BLOCK; case SE_FORMAT_ASTC_5x4_UNORM_BLOCK: return VK_FORMAT_ASTC_5x4_UNORM_BLOCK; case SE_FORMAT_ASTC_5x4_SRGB_BLOCK: return VK_FORMAT_ASTC_5x4_SRGB_BLOCK; case SE_FORMAT_ASTC_5x5_UNORM_BLOCK: return VK_FORMAT_ASTC_5x5_UNORM_BLOCK; case SE_FORMAT_ASTC_5x5_SRGB_BLOCK: return VK_FORMAT_ASTC_5x5_SRGB_BLOCK; case SE_FORMAT_ASTC_6x5_UNORM_BLOCK: return VK_FORMAT_ASTC_6x5_UNORM_BLOCK; case SE_FORMAT_ASTC_6x5_SRGB_BLOCK: return VK_FORMAT_ASTC_6x5_SRGB_BLOCK; case SE_FORMAT_ASTC_6x6_UNORM_BLOCK: return VK_FORMAT_ASTC_6x6_UNORM_BLOCK; case SE_FORMAT_ASTC_6x6_SRGB_BLOCK: return VK_FORMAT_ASTC_6x6_SRGB_BLOCK; case SE_FORMAT_ASTC_8x5_UNORM_BLOCK: return VK_FORMAT_ASTC_8x5_UNORM_BLOCK; case SE_FORMAT_ASTC_8x5_SRGB_BLOCK: return VK_FORMAT_ASTC_8x5_SRGB_BLOCK; case SE_FORMAT_ASTC_8x6_UNORM_BLOCK: return VK_FORMAT_ASTC_8x6_UNORM_BLOCK; case SE_FORMAT_ASTC_8x6_SRGB_BLOCK: return VK_FORMAT_ASTC_8x6_SRGB_BLOCK; case SE_FORMAT_ASTC_8x8_UNORM_BLOCK: return VK_FORMAT_ASTC_8x8_UNORM_BLOCK; case SE_FORMAT_ASTC_8x8_SRGB_BLOCK: return VK_FORMAT_ASTC_8x8_SRGB_BLOCK; case SE_FORMAT_ASTC_10x5_UNORM_BLOCK: return VK_FORMAT_ASTC_10x5_UNORM_BLOCK; case SE_FORMAT_ASTC_10x5_SRGB_BLOCK: return VK_FORMAT_ASTC_10x5_SRGB_BLOCK; case SE_FORMAT_ASTC_10x6_UNORM_BLOCK: return VK_FORMAT_ASTC_10x6_UNORM_BLOCK; case SE_FORMAT_ASTC_10x6_SRGB_BLOCK: return VK_FORMAT_ASTC_10x6_SRGB_BLOCK; case SE_FORMAT_ASTC_10x8_UNORM_BLOCK: return VK_FORMAT_ASTC_10x8_UNORM_BLOCK; case SE_FORMAT_ASTC_10x8_SRGB_BLOCK: return VK_FORMAT_ASTC_10x8_SRGB_BLOCK; case SE_FORMAT_ASTC_10x10_UNORM_BLOCK: return VK_FORMAT_ASTC_10x10_UNORM_BLOCK; case SE_FORMAT_ASTC_10x10_SRGB_BLOCK: return VK_FORMAT_ASTC_10x10_SRGB_BLOCK; case SE_FORMAT_ASTC_12x10_UNORM_BLOCK: return VK_FORMAT_ASTC_12x10_UNORM_BLOCK; case SE_FORMAT_ASTC_12x10_SRGB_BLOCK: return VK_FORMAT_ASTC_12x10_SRGB_BLOCK; case SE_FORMAT_ASTC_12x12_UNORM_BLOCK: return VK_FORMAT_ASTC_12x12_UNORM_BLOCK; case SE_FORMAT_ASTC_12x12_SRGB_BLOCK: return VK_FORMAT_ASTC_12x12_SRGB_BLOCK; case SE_FORMAT_G8B8G8R8_422_UNORM: return VK_FORMAT_G8B8G8R8_422_UNORM; case SE_FORMAT_B8G8R8G8_422_UNORM: return VK_FORMAT_B8G8R8G8_422_UNORM; case SE_FORMAT_G8_B8_R8_3PLANE_420_UNORM: return VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM; case SE_FORMAT_G8_B8R8_2PLANE_420_UNORM: return VK_FORMAT_G8_B8R8_2PLANE_420_UNORM; case SE_FORMAT_G8_B8_R8_3PLANE_422_UNORM: return VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM; case SE_FORMAT_G8_B8R8_2PLANE_422_UNORM: return VK_FORMAT_G8_B8R8_2PLANE_422_UNORM; case SE_FORMAT_G8_B8_R8_3PLANE_444_UNORM: return VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM; case SE_FORMAT_R10X6_UNORM_PACK16: return VK_FORMAT_R10X6_UNORM_PACK16; case SE_FORMAT_R10X6G10X6_UNORM_2PACK16: return VK_FORMAT_R10X6G10X6_UNORM_2PACK16; case SE_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16: return VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16; case SE_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16: return VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16; case SE_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16: return VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16; case SE_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16: return VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16; case SE_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16: return VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16; case SE_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16: return VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16; case SE_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16: return VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16; case SE_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16: return VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16; case SE_FORMAT_R12X4_UNORM_PACK16: return VK_FORMAT_R12X4_UNORM_PACK16; case SE_FORMAT_R12X4G12X4_UNORM_2PACK16: return VK_FORMAT_R12X4G12X4_UNORM_2PACK16; case SE_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16: return VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16; case SE_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16: return VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16; case SE_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16: return VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16; case SE_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16: return VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16; case SE_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16: return VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16; case SE_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16: return VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16; case SE_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16: return VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16; case SE_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16: return VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16; case SE_FORMAT_G16B16G16R16_422_UNORM: return VK_FORMAT_G16B16G16R16_422_UNORM; case SE_FORMAT_B16G16R16G16_422_UNORM: return VK_FORMAT_B16G16R16G16_422_UNORM; case SE_FORMAT_G16_B16_R16_3PLANE_420_UNORM: return VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM; case SE_FORMAT_G16_B16R16_2PLANE_420_UNORM: return VK_FORMAT_G16_B16R16_2PLANE_420_UNORM; case SE_FORMAT_G16_B16_R16_3PLANE_422_UNORM: return VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM; case SE_FORMAT_G16_B16R16_2PLANE_422_UNORM: return VK_FORMAT_G16_B16R16_2PLANE_422_UNORM; case SE_FORMAT_G16_B16_R16_3PLANE_444_UNORM: return VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM; case SE_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG: return VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG; case SE_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG: return VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG; case SE_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG: return VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG; case SE_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG: return VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG; case SE_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG: return VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG; case SE_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG: return VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG; case SE_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG: return VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG; case SE_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG: return VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG; default: return VK_FORMAT_MAX_ENUM; } } Seele::Gfx::SeFormat Seele::Vulkan::cast(const VkFormat &format) { switch (format) { case VK_FORMAT_UNDEFINED: return SE_FORMAT_UNDEFINED; case VK_FORMAT_R4G4_UNORM_PACK8: return SE_FORMAT_R4G4_UNORM_PACK8; case VK_FORMAT_R4G4B4A4_UNORM_PACK16: return SE_FORMAT_R4G4B4A4_UNORM_PACK16; case VK_FORMAT_B4G4R4A4_UNORM_PACK16: return SE_FORMAT_B4G4R4A4_UNORM_PACK16; case VK_FORMAT_R5G6B5_UNORM_PACK16: return SE_FORMAT_R5G6B5_UNORM_PACK16; case VK_FORMAT_B5G6R5_UNORM_PACK16: return SE_FORMAT_B5G6R5_UNORM_PACK16; case VK_FORMAT_R5G5B5A1_UNORM_PACK16: return SE_FORMAT_R5G5B5A1_UNORM_PACK16; case VK_FORMAT_B5G5R5A1_UNORM_PACK16: return SE_FORMAT_B5G5R5A1_UNORM_PACK16; case VK_FORMAT_A1R5G5B5_UNORM_PACK16: return SE_FORMAT_A1R5G5B5_UNORM_PACK16; case VK_FORMAT_R8_UNORM: return SE_FORMAT_R8_UNORM; case VK_FORMAT_R8_SNORM: return SE_FORMAT_R8_SNORM; case VK_FORMAT_R8_USCALED: return SE_FORMAT_R8_USCALED; case VK_FORMAT_R8_SSCALED: return SE_FORMAT_R8_SSCALED; case VK_FORMAT_R8_UINT: return SE_FORMAT_R8_UINT; case VK_FORMAT_R8_SINT: return SE_FORMAT_R8_SINT; case VK_FORMAT_R8_SRGB: return SE_FORMAT_R8_SRGB; case VK_FORMAT_R8G8_UNORM: return SE_FORMAT_R8G8_UNORM; case VK_FORMAT_R8G8_SNORM: return SE_FORMAT_R8G8_SNORM; case VK_FORMAT_R8G8_USCALED: return SE_FORMAT_R8G8_USCALED; case VK_FORMAT_R8G8_SSCALED: return SE_FORMAT_R8G8_SSCALED; case VK_FORMAT_R8G8_UINT: return SE_FORMAT_R8G8_UINT; case VK_FORMAT_R8G8_SINT: return SE_FORMAT_R8G8_SINT; case VK_FORMAT_R8G8_SRGB: return SE_FORMAT_R8G8_SRGB; case VK_FORMAT_R8G8B8_UNORM: return SE_FORMAT_R8G8B8_UNORM; case VK_FORMAT_R8G8B8_SNORM: return SE_FORMAT_R8G8B8_SNORM; case VK_FORMAT_R8G8B8_USCALED: return SE_FORMAT_R8G8B8_USCALED; case VK_FORMAT_R8G8B8_SSCALED: return SE_FORMAT_R8G8B8_SSCALED; case VK_FORMAT_R8G8B8_UINT: return SE_FORMAT_R8G8B8_UINT; case VK_FORMAT_R8G8B8_SINT: return SE_FORMAT_R8G8B8_SINT; case VK_FORMAT_R8G8B8_SRGB: return SE_FORMAT_R8G8B8_SRGB; case VK_FORMAT_B8G8R8_UNORM: return SE_FORMAT_B8G8R8_UNORM; case VK_FORMAT_B8G8R8_SNORM: return SE_FORMAT_B8G8R8_SNORM; case VK_FORMAT_B8G8R8_USCALED: return SE_FORMAT_B8G8R8_USCALED; case VK_FORMAT_B8G8R8_SSCALED: return SE_FORMAT_B8G8R8_SSCALED; case VK_FORMAT_B8G8R8_UINT: return SE_FORMAT_B8G8R8_UINT; case VK_FORMAT_B8G8R8_SINT: return SE_FORMAT_B8G8R8_SINT; case VK_FORMAT_B8G8R8_SRGB: return SE_FORMAT_B8G8R8_SRGB; case VK_FORMAT_R8G8B8A8_UNORM: return SE_FORMAT_R8G8B8A8_UNORM; case VK_FORMAT_R8G8B8A8_SNORM: return SE_FORMAT_R8G8B8A8_SNORM; case VK_FORMAT_R8G8B8A8_USCALED: return SE_FORMAT_R8G8B8A8_USCALED; case VK_FORMAT_R8G8B8A8_SSCALED: return SE_FORMAT_R8G8B8A8_SSCALED; case VK_FORMAT_R8G8B8A8_UINT: return SE_FORMAT_R8G8B8A8_UINT; case VK_FORMAT_R8G8B8A8_SINT: return SE_FORMAT_R8G8B8A8_SINT; case VK_FORMAT_R8G8B8A8_SRGB: return SE_FORMAT_R8G8B8A8_SRGB; case VK_FORMAT_B8G8R8A8_UNORM: return SE_FORMAT_B8G8R8A8_UNORM; case VK_FORMAT_B8G8R8A8_SNORM: return SE_FORMAT_B8G8R8A8_SNORM; case VK_FORMAT_B8G8R8A8_USCALED: return SE_FORMAT_B8G8R8A8_USCALED; case VK_FORMAT_B8G8R8A8_SSCALED: return SE_FORMAT_B8G8R8A8_SSCALED; case VK_FORMAT_B8G8R8A8_UINT: return SE_FORMAT_B8G8R8A8_UINT; case VK_FORMAT_B8G8R8A8_SINT: return SE_FORMAT_B8G8R8A8_SINT; case VK_FORMAT_B8G8R8A8_SRGB: return SE_FORMAT_B8G8R8A8_SRGB; case VK_FORMAT_A8B8G8R8_UNORM_PACK32: return SE_FORMAT_A8B8G8R8_UNORM_PACK32; case VK_FORMAT_A8B8G8R8_SNORM_PACK32: return SE_FORMAT_A8B8G8R8_SNORM_PACK32; case VK_FORMAT_A8B8G8R8_USCALED_PACK32: return SE_FORMAT_A8B8G8R8_USCALED_PACK32; case VK_FORMAT_A8B8G8R8_SSCALED_PACK32: return SE_FORMAT_A8B8G8R8_SSCALED_PACK32; case VK_FORMAT_A8B8G8R8_UINT_PACK32: return SE_FORMAT_A8B8G8R8_UINT_PACK32; case VK_FORMAT_A8B8G8R8_SINT_PACK32: return SE_FORMAT_A8B8G8R8_SINT_PACK32; case VK_FORMAT_A8B8G8R8_SRGB_PACK32: return SE_FORMAT_A8B8G8R8_SRGB_PACK32; case VK_FORMAT_A2R10G10B10_UNORM_PACK32: return SE_FORMAT_A2R10G10B10_UNORM_PACK32; case VK_FORMAT_A2R10G10B10_SNORM_PACK32: return SE_FORMAT_A2R10G10B10_SNORM_PACK32; case VK_FORMAT_A2R10G10B10_USCALED_PACK32: return SE_FORMAT_A2R10G10B10_USCALED_PACK32; case VK_FORMAT_A2R10G10B10_SSCALED_PACK32: return SE_FORMAT_A2R10G10B10_SSCALED_PACK32; case VK_FORMAT_A2R10G10B10_UINT_PACK32: return SE_FORMAT_A2R10G10B10_UINT_PACK32; case VK_FORMAT_A2R10G10B10_SINT_PACK32: return SE_FORMAT_A2R10G10B10_SINT_PACK32; case VK_FORMAT_A2B10G10R10_UNORM_PACK32: return SE_FORMAT_A2B10G10R10_UNORM_PACK32; case VK_FORMAT_A2B10G10R10_SNORM_PACK32: return SE_FORMAT_A2B10G10R10_SNORM_PACK32; case VK_FORMAT_A2B10G10R10_USCALED_PACK32: return SE_FORMAT_A2B10G10R10_USCALED_PACK32; case VK_FORMAT_A2B10G10R10_SSCALED_PACK32: return SE_FORMAT_A2B10G10R10_SSCALED_PACK32; case VK_FORMAT_A2B10G10R10_UINT_PACK32: return SE_FORMAT_A2B10G10R10_UINT_PACK32; case VK_FORMAT_A2B10G10R10_SINT_PACK32: return SE_FORMAT_A2B10G10R10_SINT_PACK32; case VK_FORMAT_R16_UNORM: return SE_FORMAT_R16_UNORM; case VK_FORMAT_R16_SNORM: return SE_FORMAT_R16_SNORM; case VK_FORMAT_R16_USCALED: return SE_FORMAT_R16_USCALED; case VK_FORMAT_R16_SSCALED: return SE_FORMAT_R16_SSCALED; case VK_FORMAT_R16_UINT: return SE_FORMAT_R16_UINT; case VK_FORMAT_R16_SINT: return SE_FORMAT_R16_SINT; case VK_FORMAT_R16_SFLOAT: return SE_FORMAT_R16_SFLOAT; case VK_FORMAT_R16G16_UNORM: return SE_FORMAT_R16G16_UNORM; case VK_FORMAT_R16G16_SNORM: return SE_FORMAT_R16G16_SNORM; case VK_FORMAT_R16G16_USCALED: return SE_FORMAT_R16G16_USCALED; case VK_FORMAT_R16G16_SSCALED: return SE_FORMAT_R16G16_SSCALED; case VK_FORMAT_R16G16_UINT: return SE_FORMAT_R16G16_UINT; case VK_FORMAT_R16G16_SINT: return SE_FORMAT_R16G16_SINT; case VK_FORMAT_R16G16_SFLOAT: return SE_FORMAT_R16G16_SFLOAT; case VK_FORMAT_R16G16B16_UNORM: return SE_FORMAT_R16G16B16_UNORM; case VK_FORMAT_R16G16B16_SNORM: return SE_FORMAT_R16G16B16_SNORM; case VK_FORMAT_R16G16B16_USCALED: return SE_FORMAT_R16G16B16_USCALED; case VK_FORMAT_R16G16B16_SSCALED: return SE_FORMAT_R16G16B16_SSCALED; case VK_FORMAT_R16G16B16_UINT: return SE_FORMAT_R16G16B16_UINT; case VK_FORMAT_R16G16B16_SINT: return SE_FORMAT_R16G16B16_SINT; case VK_FORMAT_R16G16B16_SFLOAT: return SE_FORMAT_R16G16B16_SFLOAT; case VK_FORMAT_R16G16B16A16_UNORM: return SE_FORMAT_R16G16B16A16_UNORM; case VK_FORMAT_R16G16B16A16_SNORM: return SE_FORMAT_R16G16B16A16_SNORM; case VK_FORMAT_R16G16B16A16_USCALED: return SE_FORMAT_R16G16B16A16_USCALED; case VK_FORMAT_R16G16B16A16_SSCALED: return SE_FORMAT_R16G16B16A16_SSCALED; case VK_FORMAT_R16G16B16A16_UINT: return SE_FORMAT_R16G16B16A16_UINT; case VK_FORMAT_R16G16B16A16_SINT: return SE_FORMAT_R16G16B16A16_SINT; case VK_FORMAT_R16G16B16A16_SFLOAT: return SE_FORMAT_R16G16B16A16_SFLOAT; case VK_FORMAT_R32_UINT: return SE_FORMAT_R32_UINT; case VK_FORMAT_R32_SINT: return SE_FORMAT_R32_SINT; case VK_FORMAT_R32_SFLOAT: return SE_FORMAT_R32_SFLOAT; case VK_FORMAT_R32G32_UINT: return SE_FORMAT_R32G32_UINT; case VK_FORMAT_R32G32_SINT: return SE_FORMAT_R32G32_SINT; case VK_FORMAT_R32G32_SFLOAT: return SE_FORMAT_R32G32_SFLOAT; case VK_FORMAT_R32G32B32_UINT: return SE_FORMAT_R32G32B32_UINT; case VK_FORMAT_R32G32B32_SINT: return SE_FORMAT_R32G32B32_SINT; case VK_FORMAT_R32G32B32_SFLOAT: return SE_FORMAT_R32G32B32_SFLOAT; case VK_FORMAT_R32G32B32A32_UINT: return SE_FORMAT_R32G32B32A32_UINT; case VK_FORMAT_R32G32B32A32_SINT: return SE_FORMAT_R32G32B32A32_SINT; case VK_FORMAT_R32G32B32A32_SFLOAT: return SE_FORMAT_R32G32B32A32_SFLOAT; case VK_FORMAT_R64_UINT: return SE_FORMAT_R64_UINT; case VK_FORMAT_R64_SINT: return SE_FORMAT_R64_SINT; case VK_FORMAT_R64_SFLOAT: return SE_FORMAT_R64_SFLOAT; case VK_FORMAT_R64G64_UINT: return SE_FORMAT_R64G64_UINT; case VK_FORMAT_R64G64_SINT: return SE_FORMAT_R64G64_SINT; case VK_FORMAT_R64G64_SFLOAT: return SE_FORMAT_R64G64_SFLOAT; case VK_FORMAT_R64G64B64_UINT: return SE_FORMAT_R64G64B64_UINT; case VK_FORMAT_R64G64B64_SINT: return SE_FORMAT_R64G64B64_SINT; case VK_FORMAT_R64G64B64_SFLOAT: return SE_FORMAT_R64G64B64_SFLOAT; case VK_FORMAT_R64G64B64A64_UINT: return SE_FORMAT_R64G64B64A64_UINT; case VK_FORMAT_R64G64B64A64_SINT: return SE_FORMAT_R64G64B64A64_SINT; case VK_FORMAT_R64G64B64A64_SFLOAT: return SE_FORMAT_R64G64B64A64_SFLOAT; case VK_FORMAT_B10G11R11_UFLOAT_PACK32: return SE_FORMAT_B10G11R11_UFLOAT_PACK32; case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: return SE_FORMAT_E5B9G9R9_UFLOAT_PACK32; case VK_FORMAT_D16_UNORM: return SE_FORMAT_D16_UNORM; case VK_FORMAT_X8_D24_UNORM_PACK32: return SE_FORMAT_X8_D24_UNORM_PACK32; case VK_FORMAT_D32_SFLOAT: return SE_FORMAT_D32_SFLOAT; case VK_FORMAT_S8_UINT: return SE_FORMAT_S8_UINT; case VK_FORMAT_D16_UNORM_S8_UINT: return SE_FORMAT_D16_UNORM_S8_UINT; case VK_FORMAT_D24_UNORM_S8_UINT: return SE_FORMAT_D24_UNORM_S8_UINT; case VK_FORMAT_D32_SFLOAT_S8_UINT: return SE_FORMAT_D32_SFLOAT_S8_UINT; case VK_FORMAT_BC1_RGB_UNORM_BLOCK: return SE_FORMAT_BC1_RGB_UNORM_BLOCK; case VK_FORMAT_BC1_RGB_SRGB_BLOCK: return SE_FORMAT_BC1_RGB_SRGB_BLOCK; case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: return SE_FORMAT_BC1_RGBA_UNORM_BLOCK; case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: return SE_FORMAT_BC1_RGBA_SRGB_BLOCK; case VK_FORMAT_BC2_UNORM_BLOCK: return SE_FORMAT_BC2_UNORM_BLOCK; case VK_FORMAT_BC2_SRGB_BLOCK: return SE_FORMAT_BC2_SRGB_BLOCK; case VK_FORMAT_BC3_UNORM_BLOCK: return SE_FORMAT_BC3_UNORM_BLOCK; case VK_FORMAT_BC3_SRGB_BLOCK: return SE_FORMAT_BC3_SRGB_BLOCK; case VK_FORMAT_BC4_UNORM_BLOCK: return SE_FORMAT_BC4_UNORM_BLOCK; case VK_FORMAT_BC4_SNORM_BLOCK: return SE_FORMAT_BC4_SNORM_BLOCK; case VK_FORMAT_BC5_UNORM_BLOCK: return SE_FORMAT_BC5_UNORM_BLOCK; case VK_FORMAT_BC5_SNORM_BLOCK: return SE_FORMAT_BC5_SNORM_BLOCK; case VK_FORMAT_BC6H_UFLOAT_BLOCK: return SE_FORMAT_BC6H_UFLOAT_BLOCK; case VK_FORMAT_BC6H_SFLOAT_BLOCK: return SE_FORMAT_BC6H_SFLOAT_BLOCK; case VK_FORMAT_BC7_UNORM_BLOCK: return SE_FORMAT_BC7_UNORM_BLOCK; case VK_FORMAT_BC7_SRGB_BLOCK: return SE_FORMAT_BC7_SRGB_BLOCK; case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: return SE_FORMAT_ETC2_R8G8B8_UNORM_BLOCK; case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: return SE_FORMAT_ETC2_R8G8B8_SRGB_BLOCK; case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: return SE_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK; case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: return SE_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK; case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: return SE_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK; case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: return SE_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK; case VK_FORMAT_EAC_R11_UNORM_BLOCK: return SE_FORMAT_EAC_R11_UNORM_BLOCK; case VK_FORMAT_EAC_R11_SNORM_BLOCK: return SE_FORMAT_EAC_R11_SNORM_BLOCK; case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: return SE_FORMAT_EAC_R11G11_UNORM_BLOCK; case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: return SE_FORMAT_EAC_R11G11_SNORM_BLOCK; case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: return SE_FORMAT_ASTC_4x4_UNORM_BLOCK; case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: return SE_FORMAT_ASTC_4x4_SRGB_BLOCK; case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: return SE_FORMAT_ASTC_5x4_UNORM_BLOCK; case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: return SE_FORMAT_ASTC_5x4_SRGB_BLOCK; case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: return SE_FORMAT_ASTC_5x5_UNORM_BLOCK; case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: return SE_FORMAT_ASTC_5x5_SRGB_BLOCK; case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: return SE_FORMAT_ASTC_6x5_UNORM_BLOCK; case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: return SE_FORMAT_ASTC_6x5_SRGB_BLOCK; case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: return SE_FORMAT_ASTC_6x6_UNORM_BLOCK; case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: return SE_FORMAT_ASTC_6x6_SRGB_BLOCK; case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: return SE_FORMAT_ASTC_8x5_UNORM_BLOCK; case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: return SE_FORMAT_ASTC_8x5_SRGB_BLOCK; case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: return SE_FORMAT_ASTC_8x6_UNORM_BLOCK; case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: return SE_FORMAT_ASTC_8x6_SRGB_BLOCK; case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: return SE_FORMAT_ASTC_8x8_UNORM_BLOCK; case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: return SE_FORMAT_ASTC_8x8_SRGB_BLOCK; case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: return SE_FORMAT_ASTC_10x5_UNORM_BLOCK; case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: return SE_FORMAT_ASTC_10x5_SRGB_BLOCK; case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: return SE_FORMAT_ASTC_10x6_UNORM_BLOCK; case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: return SE_FORMAT_ASTC_10x6_SRGB_BLOCK; case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: return SE_FORMAT_ASTC_10x8_UNORM_BLOCK; case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: return SE_FORMAT_ASTC_10x8_SRGB_BLOCK; case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: return SE_FORMAT_ASTC_10x10_UNORM_BLOCK; case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: return SE_FORMAT_ASTC_10x10_SRGB_BLOCK; case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: return SE_FORMAT_ASTC_12x10_UNORM_BLOCK; case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: return SE_FORMAT_ASTC_12x10_SRGB_BLOCK; case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: return SE_FORMAT_ASTC_12x12_UNORM_BLOCK; case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: return SE_FORMAT_ASTC_12x12_SRGB_BLOCK; case VK_FORMAT_G8B8G8R8_422_UNORM: return SE_FORMAT_G8B8G8R8_422_UNORM; case VK_FORMAT_B8G8R8G8_422_UNORM: return SE_FORMAT_B8G8R8G8_422_UNORM; case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM: return SE_FORMAT_G8_B8_R8_3PLANE_420_UNORM; case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM: return SE_FORMAT_G8_B8R8_2PLANE_420_UNORM; case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM: return SE_FORMAT_G8_B8_R8_3PLANE_422_UNORM; case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM: return SE_FORMAT_G8_B8R8_2PLANE_422_UNORM; case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM: return SE_FORMAT_G8_B8_R8_3PLANE_444_UNORM; case VK_FORMAT_R10X6_UNORM_PACK16: return SE_FORMAT_R10X6_UNORM_PACK16; case VK_FORMAT_R10X6G10X6_UNORM_2PACK16: return SE_FORMAT_R10X6G10X6_UNORM_2PACK16; case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16: return SE_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16; case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16: return SE_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16; case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16: return SE_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16; case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16: return SE_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16; case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16: return SE_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16; case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16: return SE_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16; case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16: return SE_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16; case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16: return SE_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16; case VK_FORMAT_R12X4_UNORM_PACK16: return SE_FORMAT_R12X4_UNORM_PACK16; case VK_FORMAT_R12X4G12X4_UNORM_2PACK16: return SE_FORMAT_R12X4G12X4_UNORM_2PACK16; case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16: return SE_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16; case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16: return SE_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16; case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16: return SE_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16; case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16: return SE_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16; case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16: return SE_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16; case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16: return SE_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16; case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16: return SE_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16; case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16: return SE_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16; case VK_FORMAT_G16B16G16R16_422_UNORM: return SE_FORMAT_G16B16G16R16_422_UNORM; case VK_FORMAT_B16G16R16G16_422_UNORM: return SE_FORMAT_B16G16R16G16_422_UNORM; case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM: return SE_FORMAT_G16_B16_R16_3PLANE_420_UNORM; case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM: return SE_FORMAT_G16_B16R16_2PLANE_420_UNORM; case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM: return SE_FORMAT_G16_B16_R16_3PLANE_422_UNORM; case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM: return SE_FORMAT_G16_B16R16_2PLANE_422_UNORM; case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM: return SE_FORMAT_G16_B16_R16_3PLANE_444_UNORM; case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG: return SE_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG; case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG: return SE_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG; case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG: return SE_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG; case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG: return SE_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG; case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG: return SE_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG; case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG: return SE_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG; case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG: return SE_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG; case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG: return SE_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG; default: return SE_FORMAT_MAX_ENUM; } } VkImageLayout Seele::Vulkan::cast(const Gfx::SeImageLayout &imageLayout) { switch (imageLayout) { case SE_IMAGE_LAYOUT_UNDEFINED: return VK_IMAGE_LAYOUT_UNDEFINED; case SE_IMAGE_LAYOUT_GENERAL: return VK_IMAGE_LAYOUT_GENERAL; case SE_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: return VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; case SE_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: return VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; case SE_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: return VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL; case SE_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: return VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; case SE_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: return VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; case SE_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; case SE_IMAGE_LAYOUT_PREINITIALIZED: return VK_IMAGE_LAYOUT_PREINITIALIZED; case SE_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL: return VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL; case SE_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: return VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL; case SE_IMAGE_LAYOUT_PRESENT_SRC_KHR: return VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; case SE_IMAGE_LAYOUT_SHARED_PRESENT_KHR: return VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR; case SE_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV: return VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV; case SE_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT: return VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT; default: return VK_IMAGE_LAYOUT_MAX_ENUM; } } Gfx::SeImageLayout Seele::Vulkan::cast(const VkImageLayout &imageLayout) { switch (imageLayout) { case VK_IMAGE_LAYOUT_UNDEFINED: return SE_IMAGE_LAYOUT_UNDEFINED; case VK_IMAGE_LAYOUT_GENERAL: return SE_IMAGE_LAYOUT_GENERAL; case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: return SE_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: return SE_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: return SE_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL; case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: return SE_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: return SE_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: return SE_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; case VK_IMAGE_LAYOUT_PREINITIALIZED: return SE_IMAGE_LAYOUT_PREINITIALIZED; case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL: return SE_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL; case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: return SE_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL; case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR: return SE_IMAGE_LAYOUT_PRESENT_SRC_KHR; case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR: return SE_IMAGE_LAYOUT_SHARED_PRESENT_KHR; case VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV: return SE_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV; case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT: return SE_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT; default: return SE_IMAGE_LAYOUT_MAX_ENUM; } } VkAttachmentStoreOp Seele::Vulkan::cast(const Gfx::SeAttachmentStoreOp &storeOp) { switch (storeOp) { case SE_ATTACHMENT_STORE_OP_STORE: return VK_ATTACHMENT_STORE_OP_STORE; case SE_ATTACHMENT_STORE_OP_DONT_CARE: return VK_ATTACHMENT_STORE_OP_DONT_CARE; default: return VK_ATTACHMENT_STORE_OP_MAX_ENUM; } } Gfx::SeAttachmentStoreOp Seele::Vulkan::cast(const VkAttachmentStoreOp &storeOp) { switch (storeOp) { case VK_ATTACHMENT_STORE_OP_STORE: return SE_ATTACHMENT_STORE_OP_STORE; case VK_ATTACHMENT_STORE_OP_DONT_CARE: return SE_ATTACHMENT_STORE_OP_DONT_CARE; default: return SE_ATTACHMENT_STORE_OP_MAX_ENUM; } } VkAttachmentLoadOp Seele::Vulkan::cast(const Gfx::SeAttachmentLoadOp &loadOp) { switch (loadOp) { case SE_ATTACHMENT_LOAD_OP_LOAD: return VK_ATTACHMENT_LOAD_OP_LOAD; case SE_ATTACHMENT_LOAD_OP_CLEAR: return VK_ATTACHMENT_LOAD_OP_CLEAR; case SE_ATTACHMENT_LOAD_OP_DONT_CARE: return VK_ATTACHMENT_LOAD_OP_DONT_CARE; default: return VK_ATTACHMENT_LOAD_OP_MAX_ENUM; } } Gfx::SeAttachmentLoadOp Seele::Vulkan::cast(const VkAttachmentLoadOp &loadOp) { switch (loadOp) { case VK_ATTACHMENT_LOAD_OP_LOAD: return SE_ATTACHMENT_LOAD_OP_LOAD; case VK_ATTACHMENT_LOAD_OP_CLEAR: return SE_ATTACHMENT_LOAD_OP_CLEAR; case VK_ATTACHMENT_LOAD_OP_DONT_CARE: return SE_ATTACHMENT_LOAD_OP_DONT_CARE; default: return SE_ATTACHMENT_LOAD_OP_MAX_ENUM; } } VkIndexType Seele::Vulkan::cast(const Gfx::SeIndexType &indexType) { switch (indexType) { case Gfx::SE_INDEX_TYPE_UINT16: return VK_INDEX_TYPE_UINT16; case Gfx::SE_INDEX_TYPE_UINT32: return VK_INDEX_TYPE_UINT32; default: return VK_INDEX_TYPE_MAX_ENUM; } } Gfx::SeIndexType Seele::Vulkan::cast(const VkIndexType &indexType) { switch (indexType) { case VK_INDEX_TYPE_UINT16: return Gfx::SE_INDEX_TYPE_UINT16; case VK_INDEX_TYPE_UINT32: return Gfx::SE_INDEX_TYPE_UINT32; default: return Gfx::SE_INDEX_TYPE_MAX_ENUM; } } VkPrimitiveTopology Seele::Vulkan::cast(const Gfx::SePrimitiveTopology &topology) { switch (topology) { case SE_PRIMITIVE_TOPOLOGY_POINT_LIST: return VK_PRIMITIVE_TOPOLOGY_POINT_LIST; case SE_PRIMITIVE_TOPOLOGY_LINE_LIST: return VK_PRIMITIVE_TOPOLOGY_LINE_LIST; case SE_PRIMITIVE_TOPOLOGY_LINE_STRIP: return VK_PRIMITIVE_TOPOLOGY_LINE_STRIP; case SE_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; case SE_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP; case SE_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN; case SE_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: return VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY; case SE_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: return VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY; case SE_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY; case SE_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY; case SE_PRIMITIVE_TOPOLOGY_PATCH_LIST: return VK_PRIMITIVE_TOPOLOGY_PATCH_LIST; default: return VK_PRIMITIVE_TOPOLOGY_MAX_ENUM; } } Gfx::SePrimitiveTopology Seele::Vulkan::cast(const VkPrimitiveTopology &topology) { switch (topology) { case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: return SE_PRIMITIVE_TOPOLOGY_POINT_LIST; case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: return SE_PRIMITIVE_TOPOLOGY_LINE_LIST; case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: return SE_PRIMITIVE_TOPOLOGY_LINE_STRIP; case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: return SE_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: return SE_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP; case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: return SE_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN; case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: return SE_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY; case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: return SE_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY; case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: return SE_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY; case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: return SE_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY; case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST: return SE_PRIMITIVE_TOPOLOGY_PATCH_LIST; default: return SE_PRIMITIVE_TOPOLOGY_MAX_ENUM; } } VkPolygonMode Seele::Vulkan::cast(const Gfx::SePolygonMode &mode) { switch (mode) { case SE_POLYGON_MODE_FILL: return VK_POLYGON_MODE_FILL; case SE_POLYGON_MODE_LINE: return VK_POLYGON_MODE_LINE; case SE_POLYGON_MODE_POINT: return VK_POLYGON_MODE_POINT; default: return VK_POLYGON_MODE_MAX_ENUM; } } Gfx::SePolygonMode Seele::Vulkan::cast(const VkPolygonMode &mode) { switch (mode) { case VK_POLYGON_MODE_FILL: return SE_POLYGON_MODE_FILL; case VK_POLYGON_MODE_LINE: return SE_POLYGON_MODE_LINE; case VK_POLYGON_MODE_POINT: return SE_POLYGON_MODE_POINT; default: return SE_POLYGON_MODE_MAX_ENUM; } } VkCompareOp Seele::Vulkan::cast(const Gfx::SeCompareOp &op) { switch (op) { case SE_COMPARE_OP_NEVER: return VK_COMPARE_OP_NEVER; case SE_COMPARE_OP_LESS: return VK_COMPARE_OP_LESS; case SE_COMPARE_OP_EQUAL: return VK_COMPARE_OP_EQUAL; case SE_COMPARE_OP_LESS_OR_EQUAL: return VK_COMPARE_OP_LESS_OR_EQUAL; case SE_COMPARE_OP_GREATER: return VK_COMPARE_OP_GREATER; case SE_COMPARE_OP_NOT_EQUAL: return VK_COMPARE_OP_NOT_EQUAL; case SE_COMPARE_OP_GREATER_OR_EQUAL: return VK_COMPARE_OP_GREATER_OR_EQUAL; case SE_COMPARE_OP_ALWAYS: return VK_COMPARE_OP_ALWAYS; default: return VK_COMPARE_OP_MAX_ENUM; } } Gfx::SeCompareOp Seele::Vulkan::cast(const VkCompareOp &op) { switch (op) { case VK_COMPARE_OP_NEVER: return SE_COMPARE_OP_NEVER; case VK_COMPARE_OP_LESS: return SE_COMPARE_OP_LESS; case VK_COMPARE_OP_EQUAL: return SE_COMPARE_OP_EQUAL; case VK_COMPARE_OP_LESS_OR_EQUAL: return SE_COMPARE_OP_LESS_OR_EQUAL; case VK_COMPARE_OP_GREATER: return SE_COMPARE_OP_GREATER; case VK_COMPARE_OP_NOT_EQUAL: return SE_COMPARE_OP_NOT_EQUAL; case VK_COMPARE_OP_GREATER_OR_EQUAL: return SE_COMPARE_OP_GREATER_OR_EQUAL; case VK_COMPARE_OP_ALWAYS: return SE_COMPARE_OP_ALWAYS; default: return SE_COMPARE_OP_MAX_ENUM; } } VkClearValue Seele::Vulkan::cast(const Gfx::SeClearValue& clear) { VkClearValue result; if constexpr (sizeof(clear) == sizeof(Gfx::SeClearColorValue)) { result.color.float32[0] = clear.color.float32[0]; result.color.float32[1] = clear.color.float32[1]; result.color.float32[2] = clear.color.float32[2]; result.color.float32[3] = clear.color.float32[3]; } else { result.depthStencil.depth = clear.depthStencil.depth; result.depthStencil.stencil = clear.depthStencil.stencil; } return result; } Gfx::SeClearValue Seele::Vulkan::cast(const VkClearValue& clear) { Gfx::SeClearValue result; if constexpr (sizeof(clear) == sizeof(VkClearColorValue)) { result.color.float32[0] = clear.color.float32[0]; result.color.float32[1] = clear.color.float32[1]; result.color.float32[2] = clear.color.float32[2]; result.color.float32[3] = clear.color.float32[3]; } else { result.depthStencil.depth = clear.depthStencil.depth; result.depthStencil.stencil = clear.depthStencil.stencil; } return result; } VkSamplerAddressMode Seele::Vulkan::cast(const Gfx::SeSamplerAddressMode &mode) { switch(mode) { case SE_SAMPLER_ADDRESS_MODE_REPEAT: return VK_SAMPLER_ADDRESS_MODE_REPEAT; case SE_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT: return VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT; case SE_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE: return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; case SE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER: return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER; case SE_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE: return VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE; default: return VK_SAMPLER_ADDRESS_MODE_MAX_ENUM; } } Gfx::SeSamplerAddressMode Seele::Vulkan::cast(const VkSamplerAddressMode &mode) { switch(mode) { case VK_SAMPLER_ADDRESS_MODE_REPEAT: return SE_SAMPLER_ADDRESS_MODE_REPEAT; case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT: return SE_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT; case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE: return SE_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER: return SE_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER; case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE: return SE_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE; default: return SE_SAMPLER_ADDRESS_MODE_MAX_ENUM; } } VkBorderColor Seele::Vulkan::cast(const Gfx::SeBorderColor &color) { switch(color) { case SE_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK: return VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK; case SE_BORDER_COLOR_INT_TRANSPARENT_BLACK: return VK_BORDER_COLOR_INT_TRANSPARENT_BLACK; case SE_BORDER_COLOR_FLOAT_OPAQUE_BLACK: return VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK; case SE_BORDER_COLOR_INT_OPAQUE_BLACK: return VK_BORDER_COLOR_INT_OPAQUE_BLACK; case SE_BORDER_COLOR_FLOAT_OPAQUE_WHITE: return VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE; case SE_BORDER_COLOR_INT_OPAQUE_WHITE: return VK_BORDER_COLOR_INT_OPAQUE_WHITE; default: return VK_BORDER_COLOR_MAX_ENUM; } } Gfx::SeBorderColor Seele::Vulkan::cast(const VkBorderColor &color) { switch(color) { case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK: return SE_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK; case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK: return SE_BORDER_COLOR_INT_TRANSPARENT_BLACK; case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK: return SE_BORDER_COLOR_FLOAT_OPAQUE_BLACK; case VK_BORDER_COLOR_INT_OPAQUE_BLACK: return SE_BORDER_COLOR_INT_OPAQUE_BLACK; case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE: return SE_BORDER_COLOR_FLOAT_OPAQUE_WHITE; case VK_BORDER_COLOR_INT_OPAQUE_WHITE: return SE_BORDER_COLOR_INT_OPAQUE_WHITE; default: return SE_BORDER_COLOR_MAX_ENUM; } } VkFilter Seele::Vulkan::cast(const Gfx::SeFilter &filter) { switch(filter) { case SE_FILTER_NEAREST: return VK_FILTER_NEAREST; case SE_FILTER_LINEAR: return VK_FILTER_LINEAR; case SE_FILTER_CUBIC_IMG: return VK_FILTER_CUBIC_IMG; default: return VK_FILTER_MAX_ENUM; } } Gfx::SeFilter Seele::Vulkan::cast(const VkFilter &filter) { switch(filter) { case VK_FILTER_NEAREST: return SE_FILTER_NEAREST; case VK_FILTER_LINEAR: return SE_FILTER_LINEAR; case VK_FILTER_CUBIC_IMG: return SE_FILTER_CUBIC_IMG; default: return SE_FILTER_MAX_ENUM; } } VkSamplerMipmapMode Seele::Vulkan::cast(const Gfx::SeSamplerMipmapMode &filter) { switch(filter) { case SE_SAMPLER_MIPMAP_MODE_NEAREST: return VK_SAMPLER_MIPMAP_MODE_NEAREST; case SE_SAMPLER_MIPMAP_MODE_LINEAR: return VK_SAMPLER_MIPMAP_MODE_LINEAR; default: return VK_SAMPLER_MIPMAP_MODE_MAX_ENUM; } } Gfx::SeSamplerMipmapMode Seele::Vulkan::cast(const VkSamplerMipmapMode &filter) { switch(filter) { case VK_SAMPLER_MIPMAP_MODE_NEAREST: return SE_SAMPLER_MIPMAP_MODE_NEAREST; case VK_SAMPLER_MIPMAP_MODE_LINEAR: return SE_SAMPLER_MIPMAP_MODE_LINEAR; default: return SE_SAMPLER_MIPMAP_MODE_MAX_ENUM; } } VkAccessFlagBits Seele::Vulkan::cast(const Gfx::SeAccessFlagBits &flags) { switch(flags) { case SE_ACCESS_INDIRECT_COMMAND_READ_BIT: return VK_ACCESS_INDIRECT_COMMAND_READ_BIT; case SE_ACCESS_INDEX_READ_BIT: return VK_ACCESS_INDEX_READ_BIT; case SE_ACCESS_VERTEX_ATTRIBUTE_READ_BIT: return VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT; case SE_ACCESS_UNIFORM_READ_BIT: return VK_ACCESS_UNIFORM_READ_BIT; case SE_ACCESS_INPUT_ATTACHMENT_READ_BIT: return VK_ACCESS_INPUT_ATTACHMENT_READ_BIT; case SE_ACCESS_SHADER_READ_BIT: return VK_ACCESS_SHADER_READ_BIT; case SE_ACCESS_SHADER_WRITE_BIT: return VK_ACCESS_SHADER_WRITE_BIT; case SE_ACCESS_COLOR_ATTACHMENT_READ_BIT: return VK_ACCESS_COLOR_ATTACHMENT_READ_BIT; case SE_ACCESS_COLOR_ATTACHMENT_WRITE_BIT: return VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; case SE_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT: return VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT; case SE_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT: return VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; case SE_ACCESS_TRANSFER_READ_BIT: return VK_ACCESS_TRANSFER_READ_BIT; case SE_ACCESS_TRANSFER_WRITE_BIT: return VK_ACCESS_TRANSFER_WRITE_BIT; case SE_ACCESS_HOST_READ_BIT: return VK_ACCESS_HOST_READ_BIT; case SE_ACCESS_HOST_WRITE_BIT: return VK_ACCESS_HOST_WRITE_BIT; case SE_ACCESS_MEMORY_READ_BIT: return VK_ACCESS_MEMORY_READ_BIT; case SE_ACCESS_MEMORY_WRITE_BIT: return VK_ACCESS_MEMORY_WRITE_BIT; case SE_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT: return VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT; case SE_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT: return VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT; case SE_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT: return VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT; case SE_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT: return VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT; case SE_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT: return VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT; case SE_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT: return VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT; case SE_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV: return VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV; case SE_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV: return VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV; default: return VK_ACCESS_FLAG_BITS_MAX_ENUM; } } Gfx::SeAccessFlagBits Seele::Vulkan::cast(const VkAccessFlagBits &flags) { switch(flags) { case VK_ACCESS_INDIRECT_COMMAND_READ_BIT: return SE_ACCESS_INDIRECT_COMMAND_READ_BIT; case VK_ACCESS_INDEX_READ_BIT: return SE_ACCESS_INDEX_READ_BIT; case VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT: return SE_ACCESS_VERTEX_ATTRIBUTE_READ_BIT; case VK_ACCESS_UNIFORM_READ_BIT: return SE_ACCESS_UNIFORM_READ_BIT; case VK_ACCESS_INPUT_ATTACHMENT_READ_BIT: return SE_ACCESS_INPUT_ATTACHMENT_READ_BIT; case VK_ACCESS_SHADER_READ_BIT: return SE_ACCESS_SHADER_READ_BIT; case VK_ACCESS_SHADER_WRITE_BIT: return SE_ACCESS_SHADER_WRITE_BIT; case VK_ACCESS_COLOR_ATTACHMENT_READ_BIT: return SE_ACCESS_COLOR_ATTACHMENT_READ_BIT; case VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT: return SE_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT: return SE_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT; case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT: return SE_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; case VK_ACCESS_TRANSFER_READ_BIT: return SE_ACCESS_TRANSFER_READ_BIT; case VK_ACCESS_TRANSFER_WRITE_BIT: return SE_ACCESS_TRANSFER_WRITE_BIT; case VK_ACCESS_HOST_READ_BIT: return SE_ACCESS_HOST_READ_BIT; case VK_ACCESS_HOST_WRITE_BIT: return SE_ACCESS_HOST_WRITE_BIT; case VK_ACCESS_MEMORY_READ_BIT: return SE_ACCESS_MEMORY_READ_BIT; case VK_ACCESS_MEMORY_WRITE_BIT: return SE_ACCESS_MEMORY_WRITE_BIT; case VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT: return SE_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT; case VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT: return SE_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT; case VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT: return SE_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT; case VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT: return SE_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT; case VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT: return SE_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT; case VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT: return SE_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT; case VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV: return SE_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV; case VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV: return SE_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV; default: return SE_ACCESS_FLAG_BITS_MAX_ENUM; } } VkPipelineStageFlagBits Seele::Vulkan::cast(const Gfx::SePipelineStageFlagBits &flags) { switch(flags) { case SE_PIPELINE_STAGE_TOP_OF_PIPE_BIT: return VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; case SE_PIPELINE_STAGE_DRAW_INDIRECT_BIT: return VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT; case SE_PIPELINE_STAGE_VERTEX_INPUT_BIT: return VK_PIPELINE_STAGE_VERTEX_INPUT_BIT; case SE_PIPELINE_STAGE_VERTEX_SHADER_BIT: return VK_PIPELINE_STAGE_VERTEX_SHADER_BIT; case SE_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT: return VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT; case SE_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT: return VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT; case SE_PIPELINE_STAGE_GEOMETRY_SHADER_BIT: return VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT; case SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT: return VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT; case SE_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT: return VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT; case SE_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT: return VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT; case SE_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT: return VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; case SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT: return VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT; case SE_PIPELINE_STAGE_TRANSFER_BIT: return VK_PIPELINE_STAGE_TRANSFER_BIT; case SE_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT: return VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; case SE_PIPELINE_STAGE_HOST_BIT: return VK_PIPELINE_STAGE_HOST_BIT; case SE_PIPELINE_STAGE_ALL_GRAPHICS_BIT: return VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT; case SE_PIPELINE_STAGE_ALL_COMMANDS_BIT: return VK_PIPELINE_STAGE_ALL_COMMANDS_BIT; case SE_PIPELINE_STAGE_NONE: return VK_PIPELINE_STAGE_NONE; case SE_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT: return VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT; case SE_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT: return VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT; case SE_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR: return VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR; case SE_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR: return VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR; case SE_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT: return VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT; case SE_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR: return VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR; case SE_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV: return VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV; case SE_PIPELINE_STAGE_TASK_SHADER_BIT_EXT: return VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT; case SE_PIPELINE_STAGE_MESH_SHADER_BIT_EXT: return VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT; default: return VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM; } } Gfx::SePipelineStageFlagBits Seele::Vulkan::cast(const VkPipelineStageFlagBits &flags) { switch(flags) { case VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT: return SE_PIPELINE_STAGE_TOP_OF_PIPE_BIT; case VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT: return SE_PIPELINE_STAGE_DRAW_INDIRECT_BIT; case VK_PIPELINE_STAGE_VERTEX_INPUT_BIT: return SE_PIPELINE_STAGE_VERTEX_INPUT_BIT; case VK_PIPELINE_STAGE_VERTEX_SHADER_BIT: return SE_PIPELINE_STAGE_VERTEX_SHADER_BIT; case VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT: return SE_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT; case VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT: return SE_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT; case VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT: return SE_PIPELINE_STAGE_GEOMETRY_SHADER_BIT; case VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT: return SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT; case VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT: return SE_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT; case VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT: return SE_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT; case VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT: return SE_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; case VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT: return SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT; case VK_PIPELINE_STAGE_TRANSFER_BIT: return SE_PIPELINE_STAGE_TRANSFER_BIT; case VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT: return SE_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT; case VK_PIPELINE_STAGE_HOST_BIT: return SE_PIPELINE_STAGE_HOST_BIT; case VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT: return SE_PIPELINE_STAGE_ALL_GRAPHICS_BIT; case VK_PIPELINE_STAGE_ALL_COMMANDS_BIT: return SE_PIPELINE_STAGE_ALL_COMMANDS_BIT; case VK_PIPELINE_STAGE_NONE: return SE_PIPELINE_STAGE_NONE; case VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT: return SE_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT; case VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT: return SE_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT; case VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR: return SE_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR; case VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR: return SE_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR; case VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT: return SE_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT; case VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR: return SE_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR; case VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV: return SE_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV; case VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT: return SE_PIPELINE_STAGE_TASK_SHADER_BIT_EXT; case VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT: return SE_PIPELINE_STAGE_MESH_SHADER_BIT_EXT; default: return SE_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM; } }