diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2024-11-06 01:47:26 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-05 09:47:26 -0800 |
| commit | b118451e301d734e3e783b3acdf871f3f6ea851c (patch) | |
| tree | 277f160d31e2c442f724bc6a2d3c09fabff403ca /tools/gfx/vulkan/vk-util.cpp | |
| parent | 53dd5928c35d5a5cb1f7d2a563348fd1fa87d672 (diff) | |
Move switch statement bodies to their own lines (#5493)
* Move switch statement bodies to their own lines
* format
---------
Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'tools/gfx/vulkan/vk-util.cpp')
| -rw-r--r-- | tools/gfx/vulkan/vk-util.cpp | 688 |
1 files changed, 453 insertions, 235 deletions
diff --git a/tools/gfx/vulkan/vk-util.cpp b/tools/gfx/vulkan/vk-util.cpp index 696e80fc7..2490d48ce 100644 --- a/tools/gfx/vulkan/vk-util.cpp +++ b/tools/gfx/vulkan/vk-util.cpp @@ -13,111 +13,195 @@ namespace gfx { switch (format) { - case Format::R32G32B32A32_TYPELESS: return VK_FORMAT_R32G32B32A32_SFLOAT; - case Format::R32G32B32_TYPELESS: return VK_FORMAT_R32G32B32_SFLOAT; - case Format::R32G32_TYPELESS: return VK_FORMAT_R32G32_SFLOAT; - case Format::R32_TYPELESS: return VK_FORMAT_R32_SFLOAT; - - case Format::R16G16B16A16_TYPELESS: return VK_FORMAT_R16G16B16A16_SFLOAT; - case Format::R16G16_TYPELESS: return VK_FORMAT_R16G16_SFLOAT; - case Format::R16_TYPELESS: return VK_FORMAT_R16_SFLOAT; - - case Format::R8G8B8A8_TYPELESS: return VK_FORMAT_R8G8B8A8_UNORM; - case Format::R8G8_TYPELESS: return VK_FORMAT_R8G8_UNORM; - case Format::R8_TYPELESS: return VK_FORMAT_R8_UNORM; - case Format::B8G8R8A8_TYPELESS: return VK_FORMAT_B8G8R8A8_UNORM; - - case Format::R64_UINT: return VK_FORMAT_R64_UINT; - - case Format::R32G32B32A32_FLOAT: return VK_FORMAT_R32G32B32A32_SFLOAT; - case Format::R32G32B32_FLOAT: return VK_FORMAT_R32G32B32_SFLOAT; - case Format::R32G32_FLOAT: return VK_FORMAT_R32G32_SFLOAT; - case Format::R32_FLOAT: return VK_FORMAT_R32_SFLOAT; - - case Format::R16G16B16A16_FLOAT: return VK_FORMAT_R16G16B16A16_SFLOAT; - case Format::R16G16_FLOAT: return VK_FORMAT_R16G16_SFLOAT; - case Format::R16_FLOAT: return VK_FORMAT_R16_SFLOAT; - - case Format::R32G32B32A32_UINT: return VK_FORMAT_R32G32B32A32_UINT; - case Format::R32G32B32_UINT: return VK_FORMAT_R32G32B32_UINT; - case Format::R32G32_UINT: return VK_FORMAT_R32G32_UINT; - case Format::R32_UINT: return VK_FORMAT_R32_UINT; - - case Format::R16G16B16A16_UINT: return VK_FORMAT_R16G16B16A16_UINT; - case Format::R16G16_UINT: return VK_FORMAT_R16G16_UINT; - case Format::R16_UINT: return VK_FORMAT_R16_UINT; - - case Format::R8G8B8A8_UINT: return VK_FORMAT_R8G8B8A8_UINT; - case Format::R8G8_UINT: return VK_FORMAT_R8G8_UINT; - case Format::R8_UINT: return VK_FORMAT_R8_UINT; - - case Format::R64_SINT: return VK_FORMAT_R64_SINT; - - case Format::R32G32B32A32_SINT: return VK_FORMAT_R32G32B32A32_SINT; - case Format::R32G32B32_SINT: return VK_FORMAT_R32G32B32_SINT; - case Format::R32G32_SINT: return VK_FORMAT_R32G32_SINT; - case Format::R32_SINT: return VK_FORMAT_R32_SINT; - - case Format::R16G16B16A16_SINT: return VK_FORMAT_R16G16B16A16_SINT; - case Format::R16G16_SINT: return VK_FORMAT_R16G16_SINT; - case Format::R16_SINT: return VK_FORMAT_R16_SINT; - - case Format::R8G8B8A8_SINT: return VK_FORMAT_R8G8B8A8_SINT; - case Format::R8G8_SINT: return VK_FORMAT_R8G8_SINT; - case Format::R8_SINT: return VK_FORMAT_R8_SINT; - - case Format::R16G16B16A16_UNORM: return VK_FORMAT_R16G16B16A16_UNORM; - case Format::R16G16_UNORM: return VK_FORMAT_R16G16_UNORM; - case Format::R16_UNORM: return VK_FORMAT_R16_UNORM; - - case Format::R8G8B8A8_UNORM: return VK_FORMAT_R8G8B8A8_UNORM; - case Format::R8G8B8A8_UNORM_SRGB: return VK_FORMAT_R8G8B8A8_SRGB; - case Format::R8G8_UNORM: return VK_FORMAT_R8G8_UNORM; - case Format::R8_UNORM: return VK_FORMAT_R8_UNORM; - case Format::B8G8R8A8_UNORM: return VK_FORMAT_B8G8R8A8_UNORM; - case Format::B8G8R8A8_UNORM_SRGB: return VK_FORMAT_B8G8R8A8_SRGB; - case Format::B8G8R8X8_UNORM: return VK_FORMAT_B8G8R8A8_UNORM; - case Format::B8G8R8X8_UNORM_SRGB: return VK_FORMAT_B8G8R8A8_SRGB; - - case Format::R16G16B16A16_SNORM: return VK_FORMAT_R16G16B16A16_SNORM; - case Format::R16G16_SNORM: return VK_FORMAT_R16G16_SNORM; - case Format::R16_SNORM: return VK_FORMAT_R16_SNORM; - - case Format::R8G8B8A8_SNORM: return VK_FORMAT_R8G8B8A8_SNORM; - case Format::R8G8_SNORM: return VK_FORMAT_R8G8_SNORM; - case Format::R8_SNORM: return VK_FORMAT_R8_SNORM; - - case Format::D32_FLOAT: return VK_FORMAT_D32_SFLOAT; - case Format::D16_UNORM: return VK_FORMAT_D16_UNORM; - case Format::D32_FLOAT_S8_UINT: return VK_FORMAT_D32_SFLOAT_S8_UINT; - case Format::R32_FLOAT_X32_TYPELESS: return VK_FORMAT_R32_SFLOAT; - - case Format::B4G4R4A4_UNORM: return VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT; - case Format::B5G6R5_UNORM: return VK_FORMAT_R5G6B5_UNORM_PACK16; - case Format::B5G5R5A1_UNORM: return VK_FORMAT_A1R5G5B5_UNORM_PACK16; - - case Format::R9G9B9E5_SHAREDEXP: return VK_FORMAT_E5B9G9R9_UFLOAT_PACK32; - case Format::R10G10B10A2_TYPELESS: return VK_FORMAT_A2B10G10R10_UINT_PACK32; - case Format::R10G10B10A2_UINT: return VK_FORMAT_A2B10G10R10_UINT_PACK32; - case Format::R10G10B10A2_UNORM: return VK_FORMAT_A2B10G10R10_UNORM_PACK32; - case Format::R11G11B10_FLOAT: return VK_FORMAT_B10G11R11_UFLOAT_PACK32; - - case Format::BC1_UNORM: return VK_FORMAT_BC1_RGBA_UNORM_BLOCK; - case Format::BC1_UNORM_SRGB: return VK_FORMAT_BC1_RGBA_SRGB_BLOCK; - case Format::BC2_UNORM: return VK_FORMAT_BC2_UNORM_BLOCK; - case Format::BC2_UNORM_SRGB: return VK_FORMAT_BC2_SRGB_BLOCK; - case Format::BC3_UNORM: return VK_FORMAT_BC3_UNORM_BLOCK; - case Format::BC3_UNORM_SRGB: return VK_FORMAT_BC3_SRGB_BLOCK; - case Format::BC4_UNORM: return VK_FORMAT_BC4_UNORM_BLOCK; - case Format::BC4_SNORM: return VK_FORMAT_BC4_SNORM_BLOCK; - case Format::BC5_UNORM: return VK_FORMAT_BC5_UNORM_BLOCK; - case Format::BC5_SNORM: return VK_FORMAT_BC5_SNORM_BLOCK; - case Format::BC6H_UF16: return VK_FORMAT_BC6H_UFLOAT_BLOCK; - case Format::BC6H_SF16: return VK_FORMAT_BC6H_SFLOAT_BLOCK; - case Format::BC7_UNORM: return VK_FORMAT_BC7_UNORM_BLOCK; - case Format::BC7_UNORM_SRGB: return VK_FORMAT_BC7_SRGB_BLOCK; - - default: return VK_FORMAT_UNDEFINED; + case Format::R32G32B32A32_TYPELESS: + return VK_FORMAT_R32G32B32A32_SFLOAT; + case Format::R32G32B32_TYPELESS: + return VK_FORMAT_R32G32B32_SFLOAT; + case Format::R32G32_TYPELESS: + return VK_FORMAT_R32G32_SFLOAT; + case Format::R32_TYPELESS: + return VK_FORMAT_R32_SFLOAT; + + case Format::R16G16B16A16_TYPELESS: + return VK_FORMAT_R16G16B16A16_SFLOAT; + case Format::R16G16_TYPELESS: + return VK_FORMAT_R16G16_SFLOAT; + case Format::R16_TYPELESS: + return VK_FORMAT_R16_SFLOAT; + + case Format::R8G8B8A8_TYPELESS: + return VK_FORMAT_R8G8B8A8_UNORM; + case Format::R8G8_TYPELESS: + return VK_FORMAT_R8G8_UNORM; + case Format::R8_TYPELESS: + return VK_FORMAT_R8_UNORM; + case Format::B8G8R8A8_TYPELESS: + return VK_FORMAT_B8G8R8A8_UNORM; + + case Format::R64_UINT: + return VK_FORMAT_R64_UINT; + + case Format::R32G32B32A32_FLOAT: + return VK_FORMAT_R32G32B32A32_SFLOAT; + case Format::R32G32B32_FLOAT: + return VK_FORMAT_R32G32B32_SFLOAT; + case Format::R32G32_FLOAT: + return VK_FORMAT_R32G32_SFLOAT; + case Format::R32_FLOAT: + return VK_FORMAT_R32_SFLOAT; + + case Format::R16G16B16A16_FLOAT: + return VK_FORMAT_R16G16B16A16_SFLOAT; + case Format::R16G16_FLOAT: + return VK_FORMAT_R16G16_SFLOAT; + case Format::R16_FLOAT: + return VK_FORMAT_R16_SFLOAT; + + case Format::R32G32B32A32_UINT: + return VK_FORMAT_R32G32B32A32_UINT; + case Format::R32G32B32_UINT: + return VK_FORMAT_R32G32B32_UINT; + case Format::R32G32_UINT: + return VK_FORMAT_R32G32_UINT; + case Format::R32_UINT: + return VK_FORMAT_R32_UINT; + + case Format::R16G16B16A16_UINT: + return VK_FORMAT_R16G16B16A16_UINT; + case Format::R16G16_UINT: + return VK_FORMAT_R16G16_UINT; + case Format::R16_UINT: + return VK_FORMAT_R16_UINT; + + case Format::R8G8B8A8_UINT: + return VK_FORMAT_R8G8B8A8_UINT; + case Format::R8G8_UINT: + return VK_FORMAT_R8G8_UINT; + case Format::R8_UINT: + return VK_FORMAT_R8_UINT; + + case Format::R64_SINT: + return VK_FORMAT_R64_SINT; + + case Format::R32G32B32A32_SINT: + return VK_FORMAT_R32G32B32A32_SINT; + case Format::R32G32B32_SINT: + return VK_FORMAT_R32G32B32_SINT; + case Format::R32G32_SINT: + return VK_FORMAT_R32G32_SINT; + case Format::R32_SINT: + return VK_FORMAT_R32_SINT; + + case Format::R16G16B16A16_SINT: + return VK_FORMAT_R16G16B16A16_SINT; + case Format::R16G16_SINT: + return VK_FORMAT_R16G16_SINT; + case Format::R16_SINT: + return VK_FORMAT_R16_SINT; + + case Format::R8G8B8A8_SINT: + return VK_FORMAT_R8G8B8A8_SINT; + case Format::R8G8_SINT: + return VK_FORMAT_R8G8_SINT; + case Format::R8_SINT: + return VK_FORMAT_R8_SINT; + + case Format::R16G16B16A16_UNORM: + return VK_FORMAT_R16G16B16A16_UNORM; + case Format::R16G16_UNORM: + return VK_FORMAT_R16G16_UNORM; + case Format::R16_UNORM: + return VK_FORMAT_R16_UNORM; + + case Format::R8G8B8A8_UNORM: + return VK_FORMAT_R8G8B8A8_UNORM; + case Format::R8G8B8A8_UNORM_SRGB: + return VK_FORMAT_R8G8B8A8_SRGB; + case Format::R8G8_UNORM: + return VK_FORMAT_R8G8_UNORM; + case Format::R8_UNORM: + return VK_FORMAT_R8_UNORM; + case Format::B8G8R8A8_UNORM: + return VK_FORMAT_B8G8R8A8_UNORM; + case Format::B8G8R8A8_UNORM_SRGB: + return VK_FORMAT_B8G8R8A8_SRGB; + case Format::B8G8R8X8_UNORM: + return VK_FORMAT_B8G8R8A8_UNORM; + case Format::B8G8R8X8_UNORM_SRGB: + return VK_FORMAT_B8G8R8A8_SRGB; + + case Format::R16G16B16A16_SNORM: + return VK_FORMAT_R16G16B16A16_SNORM; + case Format::R16G16_SNORM: + return VK_FORMAT_R16G16_SNORM; + case Format::R16_SNORM: + return VK_FORMAT_R16_SNORM; + + case Format::R8G8B8A8_SNORM: + return VK_FORMAT_R8G8B8A8_SNORM; + case Format::R8G8_SNORM: + return VK_FORMAT_R8G8_SNORM; + case Format::R8_SNORM: + return VK_FORMAT_R8_SNORM; + + case Format::D32_FLOAT: + return VK_FORMAT_D32_SFLOAT; + case Format::D16_UNORM: + return VK_FORMAT_D16_UNORM; + case Format::D32_FLOAT_S8_UINT: + return VK_FORMAT_D32_SFLOAT_S8_UINT; + case Format::R32_FLOAT_X32_TYPELESS: + return VK_FORMAT_R32_SFLOAT; + + case Format::B4G4R4A4_UNORM: + return VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT; + case Format::B5G6R5_UNORM: + return VK_FORMAT_R5G6B5_UNORM_PACK16; + case Format::B5G5R5A1_UNORM: + return VK_FORMAT_A1R5G5B5_UNORM_PACK16; + + case Format::R9G9B9E5_SHAREDEXP: + return VK_FORMAT_E5B9G9R9_UFLOAT_PACK32; + case Format::R10G10B10A2_TYPELESS: + return VK_FORMAT_A2B10G10R10_UINT_PACK32; + case Format::R10G10B10A2_UINT: + return VK_FORMAT_A2B10G10R10_UINT_PACK32; + case Format::R10G10B10A2_UNORM: + return VK_FORMAT_A2B10G10R10_UNORM_PACK32; + case Format::R11G11B10_FLOAT: + return VK_FORMAT_B10G11R11_UFLOAT_PACK32; + + case Format::BC1_UNORM: + return VK_FORMAT_BC1_RGBA_UNORM_BLOCK; + case Format::BC1_UNORM_SRGB: + return VK_FORMAT_BC1_RGBA_SRGB_BLOCK; + case Format::BC2_UNORM: + return VK_FORMAT_BC2_UNORM_BLOCK; + case Format::BC2_UNORM_SRGB: + return VK_FORMAT_BC2_SRGB_BLOCK; + case Format::BC3_UNORM: + return VK_FORMAT_BC3_UNORM_BLOCK; + case Format::BC3_UNORM_SRGB: + return VK_FORMAT_BC3_SRGB_BLOCK; + case Format::BC4_UNORM: + return VK_FORMAT_BC4_UNORM_BLOCK; + case Format::BC4_SNORM: + return VK_FORMAT_BC4_SNORM_BLOCK; + case Format::BC5_UNORM: + return VK_FORMAT_BC5_UNORM_BLOCK; + case Format::BC5_SNORM: + return VK_FORMAT_BC5_SNORM_BLOCK; + case Format::BC6H_UF16: + return VK_FORMAT_BC6H_UFLOAT_BLOCK; + case Format::BC6H_SF16: + return VK_FORMAT_BC6H_SFLOAT_BLOCK; + case Format::BC7_UNORM: + return VK_FORMAT_BC7_UNORM_BLOCK; + case Format::BC7_UNORM_SRGB: + return VK_FORMAT_BC7_SRGB_BLOCK; + + default: + return VK_FORMAT_UNDEFINED; } } @@ -134,22 +218,34 @@ VkImageAspectFlags VulkanUtil::getAspectMask(TextureAspect aspect, VkFormat form return VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; case VK_FORMAT_D16_UNORM: case VK_FORMAT_D32_SFLOAT: - case VK_FORMAT_X8_D24_UNORM_PACK32: return VK_IMAGE_ASPECT_DEPTH_BIT; - case VK_FORMAT_S8_UINT: return VK_IMAGE_ASPECT_STENCIL_BIT; - default: return VK_IMAGE_ASPECT_COLOR_BIT; + case VK_FORMAT_X8_D24_UNORM_PACK32: + return VK_IMAGE_ASPECT_DEPTH_BIT; + case VK_FORMAT_S8_UINT: + return VK_IMAGE_ASPECT_STENCIL_BIT; + default: + return VK_IMAGE_ASPECT_COLOR_BIT; } - case TextureAspect::Color: return VK_IMAGE_ASPECT_COLOR_BIT; - case TextureAspect::Depth: return VK_IMAGE_ASPECT_DEPTH_BIT; + case TextureAspect::Color: + return VK_IMAGE_ASPECT_COLOR_BIT; + case TextureAspect::Depth: + return VK_IMAGE_ASPECT_DEPTH_BIT; case TextureAspect::DepthStencil: return VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT; - case TextureAspect::Stencil: return VK_IMAGE_ASPECT_STENCIL_BIT; - case TextureAspect::Plane0: return VK_IMAGE_ASPECT_PLANE_0_BIT; - case TextureAspect::Plane1: return VK_IMAGE_ASPECT_PLANE_1_BIT; - - case TextureAspect::Plane2: return VK_IMAGE_ASPECT_PLANE_2_BIT; - - case TextureAspect::MetaData: return VK_IMAGE_ASPECT_METADATA_BIT; - default: SLANG_UNREACHABLE("getAspectMask"); return 0; + case TextureAspect::Stencil: + return VK_IMAGE_ASPECT_STENCIL_BIT; + case TextureAspect::Plane0: + return VK_IMAGE_ASPECT_PLANE_0_BIT; + case TextureAspect::Plane1: + return VK_IMAGE_ASPECT_PLANE_1_BIT; + + case TextureAspect::Plane2: + return VK_IMAGE_ASPECT_PLANE_2_BIT; + + case TextureAspect::MetaData: + return VK_IMAGE_ASPECT_METADATA_BIT; + default: + SLANG_UNREACHABLE("getAspectMask"); + return 0; } } @@ -162,21 +258,37 @@ VkShaderStageFlags VulkanUtil::getShaderStage(SlangStage stage) { switch (stage) { - case SLANG_STAGE_ANY_HIT: return VK_SHADER_STAGE_ANY_HIT_BIT_KHR; - case SLANG_STAGE_CALLABLE: return VK_SHADER_STAGE_CALLABLE_BIT_KHR; - case SLANG_STAGE_CLOSEST_HIT: return VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR; - case SLANG_STAGE_COMPUTE: return VK_SHADER_STAGE_COMPUTE_BIT; - case SLANG_STAGE_DOMAIN: return VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT; - case SLANG_STAGE_FRAGMENT: return VK_SHADER_STAGE_FRAGMENT_BIT; - case SLANG_STAGE_GEOMETRY: return VK_SHADER_STAGE_GEOMETRY_BIT; - case SLANG_STAGE_HULL: return VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT; - case SLANG_STAGE_INTERSECTION: return VK_SHADER_STAGE_INTERSECTION_BIT_KHR; - case SLANG_STAGE_MISS: return VK_SHADER_STAGE_MISS_BIT_KHR; - case SLANG_STAGE_RAY_GENERATION: return VK_SHADER_STAGE_RAYGEN_BIT_KHR; - case SLANG_STAGE_VERTEX: return VK_SHADER_STAGE_VERTEX_BIT; - case SLANG_STAGE_MESH: return VK_SHADER_STAGE_MESH_BIT_EXT; - case SLANG_STAGE_AMPLIFICATION: return VK_SHADER_STAGE_TASK_BIT_EXT; - default: assert(!"unsupported stage."); return VkShaderStageFlags(-1); + case SLANG_STAGE_ANY_HIT: + return VK_SHADER_STAGE_ANY_HIT_BIT_KHR; + case SLANG_STAGE_CALLABLE: + return VK_SHADER_STAGE_CALLABLE_BIT_KHR; + case SLANG_STAGE_CLOSEST_HIT: + return VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR; + case SLANG_STAGE_COMPUTE: + return VK_SHADER_STAGE_COMPUTE_BIT; + case SLANG_STAGE_DOMAIN: + return VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT; + case SLANG_STAGE_FRAGMENT: + return VK_SHADER_STAGE_FRAGMENT_BIT; + case SLANG_STAGE_GEOMETRY: + return VK_SHADER_STAGE_GEOMETRY_BIT; + case SLANG_STAGE_HULL: + return VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT; + case SLANG_STAGE_INTERSECTION: + return VK_SHADER_STAGE_INTERSECTION_BIT_KHR; + case SLANG_STAGE_MISS: + return VK_SHADER_STAGE_MISS_BIT_KHR; + case SLANG_STAGE_RAY_GENERATION: + return VK_SHADER_STAGE_RAYGEN_BIT_KHR; + case SLANG_STAGE_VERTEX: + return VK_SHADER_STAGE_VERTEX_BIT; + case SLANG_STAGE_MESH: + return VK_SHADER_STAGE_MESH_BIT_EXT; + case SLANG_STAGE_AMPLIFICATION: + return VK_SHADER_STAGE_TASK_BIT_EXT; + default: + assert(!"unsupported stage."); + return VkShaderStageFlags(-1); } } @@ -186,18 +298,29 @@ VkImageLayout VulkanUtil::getImageLayoutFromState(ResourceState state) { case ResourceState::ShaderResource: case ResourceState::PixelShaderResource: - case ResourceState::NonPixelShaderResource: return VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + case ResourceState::NonPixelShaderResource: + return VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; case ResourceState::UnorderedAccess: - case ResourceState::General: return VK_IMAGE_LAYOUT_GENERAL; - case ResourceState::Present: return VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; - case ResourceState::CopySource: return VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; - case ResourceState::CopyDestination: return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; - case ResourceState::RenderTarget: return VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - case ResourceState::DepthWrite: return VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; - case ResourceState::DepthRead: return VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL; - case ResourceState::ResolveSource: return VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; - case ResourceState::ResolveDestination: return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; - default: return VK_IMAGE_LAYOUT_UNDEFINED; + case ResourceState::General: + return VK_IMAGE_LAYOUT_GENERAL; + case ResourceState::Present: + return VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; + case ResourceState::CopySource: + return VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; + case ResourceState::CopyDestination: + return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; + case ResourceState::RenderTarget: + return VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + case ResourceState::DepthWrite: + return VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + case ResourceState::DepthRead: + return VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL; + case ResourceState::ResolveSource: + return VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; + case ResourceState::ResolveDestination: + return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; + default: + return VK_IMAGE_LAYOUT_UNDEFINED; } return VkImageLayout(); } @@ -206,14 +329,23 @@ VkSampleCountFlagBits VulkanUtil::translateSampleCount(uint32_t sampleCount) { switch (sampleCount) { - case 1: return VK_SAMPLE_COUNT_1_BIT; - case 2: return VK_SAMPLE_COUNT_2_BIT; - case 4: return VK_SAMPLE_COUNT_4_BIT; - case 8: return VK_SAMPLE_COUNT_8_BIT; - case 16: return VK_SAMPLE_COUNT_16_BIT; - case 32: return VK_SAMPLE_COUNT_32_BIT; - case 64: return VK_SAMPLE_COUNT_64_BIT; - default: assert(!"Unsupported sample count"); return VK_SAMPLE_COUNT_1_BIT; + case 1: + return VK_SAMPLE_COUNT_1_BIT; + case 2: + return VK_SAMPLE_COUNT_2_BIT; + case 4: + return VK_SAMPLE_COUNT_4_BIT; + case 8: + return VK_SAMPLE_COUNT_8_BIT; + case 16: + return VK_SAMPLE_COUNT_16_BIT; + case 32: + return VK_SAMPLE_COUNT_32_BIT; + case 64: + return VK_SAMPLE_COUNT_64_BIT; + default: + assert(!"Unsupported sample count"); + return VK_SAMPLE_COUNT_1_BIT; } } @@ -221,10 +353,15 @@ VkCullModeFlags VulkanUtil::translateCullMode(CullMode cullMode) { switch (cullMode) { - case CullMode::None: return VK_CULL_MODE_NONE; - case CullMode::Front: return VK_CULL_MODE_FRONT_BIT; - case CullMode::Back: return VK_CULL_MODE_BACK_BIT; - default: assert(!"Unsupported cull mode"); return VK_CULL_MODE_NONE; + case CullMode::None: + return VK_CULL_MODE_NONE; + case CullMode::Front: + return VK_CULL_MODE_FRONT_BIT; + case CullMode::Back: + return VK_CULL_MODE_BACK_BIT; + default: + assert(!"Unsupported cull mode"); + return VK_CULL_MODE_NONE; } } @@ -232,9 +369,13 @@ VkFrontFace VulkanUtil::translateFrontFaceMode(FrontFaceMode frontFaceMode) { switch (frontFaceMode) { - case FrontFaceMode::CounterClockwise: return VK_FRONT_FACE_COUNTER_CLOCKWISE; - case FrontFaceMode::Clockwise: return VK_FRONT_FACE_CLOCKWISE; - default: assert(!"Unsupported front face mode"); return VK_FRONT_FACE_CLOCKWISE; + case FrontFaceMode::CounterClockwise: + return VK_FRONT_FACE_COUNTER_CLOCKWISE; + case FrontFaceMode::Clockwise: + return VK_FRONT_FACE_CLOCKWISE; + default: + assert(!"Unsupported front face mode"); + return VK_FRONT_FACE_CLOCKWISE; } } @@ -242,9 +383,13 @@ VkPolygonMode VulkanUtil::translateFillMode(FillMode fillMode) { switch (fillMode) { - case FillMode::Solid: return VK_POLYGON_MODE_FILL; - case FillMode::Wireframe: return VK_POLYGON_MODE_LINE; - default: assert(!"Unsupported fill mode"); return VK_POLYGON_MODE_FILL; + case FillMode::Solid: + return VK_POLYGON_MODE_FILL; + case FillMode::Wireframe: + return VK_POLYGON_MODE_LINE; + default: + assert(!"Unsupported fill mode"); + return VK_POLYGON_MODE_FILL; } } @@ -252,25 +397,44 @@ VkBlendFactor VulkanUtil::translateBlendFactor(BlendFactor blendFactor) { switch (blendFactor) { - case BlendFactor::Zero: return VK_BLEND_FACTOR_ZERO; - case BlendFactor::One: return VK_BLEND_FACTOR_ONE; - case BlendFactor::SrcColor: return VK_BLEND_FACTOR_SRC_COLOR; - case BlendFactor::InvSrcColor: return VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR; - case BlendFactor::SrcAlpha: return VK_BLEND_FACTOR_SRC_ALPHA; - case BlendFactor::InvSrcAlpha: return VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA; - case BlendFactor::DestAlpha: return VK_BLEND_FACTOR_DST_ALPHA; - case BlendFactor::InvDestAlpha: return VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA; - case BlendFactor::DestColor: return VK_BLEND_FACTOR_DST_COLOR; - case BlendFactor::InvDestColor: return VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA; - case BlendFactor::SrcAlphaSaturate: return VK_BLEND_FACTOR_SRC_ALPHA_SATURATE; - case BlendFactor::BlendColor: return VK_BLEND_FACTOR_CONSTANT_COLOR; - case BlendFactor::InvBlendColor: return VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR; - case BlendFactor::SecondarySrcColor: return VK_BLEND_FACTOR_SRC1_COLOR; - case BlendFactor::InvSecondarySrcColor: return VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR; - case BlendFactor::SecondarySrcAlpha: return VK_BLEND_FACTOR_SRC1_ALPHA; - case BlendFactor::InvSecondarySrcAlpha: return VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA; - - default: assert(!"Unsupported blend factor"); return VK_BLEND_FACTOR_ONE; + case BlendFactor::Zero: + return VK_BLEND_FACTOR_ZERO; + case BlendFactor::One: + return VK_BLEND_FACTOR_ONE; + case BlendFactor::SrcColor: + return VK_BLEND_FACTOR_SRC_COLOR; + case BlendFactor::InvSrcColor: + return VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR; + case BlendFactor::SrcAlpha: + return VK_BLEND_FACTOR_SRC_ALPHA; + case BlendFactor::InvSrcAlpha: + return VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA; + case BlendFactor::DestAlpha: + return VK_BLEND_FACTOR_DST_ALPHA; + case BlendFactor::InvDestAlpha: + return VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA; + case BlendFactor::DestColor: + return VK_BLEND_FACTOR_DST_COLOR; + case BlendFactor::InvDestColor: + return VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA; + case BlendFactor::SrcAlphaSaturate: + return VK_BLEND_FACTOR_SRC_ALPHA_SATURATE; + case BlendFactor::BlendColor: + return VK_BLEND_FACTOR_CONSTANT_COLOR; + case BlendFactor::InvBlendColor: + return VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR; + case BlendFactor::SecondarySrcColor: + return VK_BLEND_FACTOR_SRC1_COLOR; + case BlendFactor::InvSecondarySrcColor: + return VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR; + case BlendFactor::SecondarySrcAlpha: + return VK_BLEND_FACTOR_SRC1_ALPHA; + case BlendFactor::InvSecondarySrcAlpha: + return VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA; + + default: + assert(!"Unsupported blend factor"); + return VK_BLEND_FACTOR_ONE; } } @@ -278,12 +442,19 @@ VkBlendOp VulkanUtil::translateBlendOp(BlendOp op) { switch (op) { - case BlendOp::Add: return VK_BLEND_OP_ADD; - case BlendOp::Subtract: return VK_BLEND_OP_SUBTRACT; - case BlendOp::ReverseSubtract: return VK_BLEND_OP_REVERSE_SUBTRACT; - case BlendOp::Min: return VK_BLEND_OP_MIN; - case BlendOp::Max: return VK_BLEND_OP_MAX; - default: assert(!"Unsupported blend op"); return VK_BLEND_OP_ADD; + case BlendOp::Add: + return VK_BLEND_OP_ADD; + case BlendOp::Subtract: + return VK_BLEND_OP_SUBTRACT; + case BlendOp::ReverseSubtract: + return VK_BLEND_OP_REVERSE_SUBTRACT; + case BlendOp::Min: + return VK_BLEND_OP_MIN; + case BlendOp::Max: + return VK_BLEND_OP_MAX; + default: + assert(!"Unsupported blend op"); + return VK_BLEND_OP_ADD; } } @@ -291,11 +462,17 @@ VkPrimitiveTopology VulkanUtil::translatePrimitiveTypeToListTopology(PrimitiveTy { switch (primitiveType) { - case PrimitiveType::Point: return VK_PRIMITIVE_TOPOLOGY_POINT_LIST; - case PrimitiveType::Line: return VK_PRIMITIVE_TOPOLOGY_LINE_LIST; - case PrimitiveType::Triangle: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; - case PrimitiveType::Patch: return VK_PRIMITIVE_TOPOLOGY_PATCH_LIST; - default: assert(!"unknown topology type."); return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + case PrimitiveType::Point: + return VK_PRIMITIVE_TOPOLOGY_POINT_LIST; + case PrimitiveType::Line: + return VK_PRIMITIVE_TOPOLOGY_LINE_LIST; + case PrimitiveType::Triangle: + return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + case PrimitiveType::Patch: + return VK_PRIMITIVE_TOPOLOGY_PATCH_LIST; + default: + assert(!"unknown topology type."); + return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; } } @@ -303,15 +480,24 @@ VkStencilOp VulkanUtil::translateStencilOp(StencilOp op) { switch (op) { - case StencilOp::DecrementSaturate: return VK_STENCIL_OP_DECREMENT_AND_CLAMP; - case StencilOp::DecrementWrap: return VK_STENCIL_OP_DECREMENT_AND_WRAP; - case StencilOp::IncrementSaturate: return VK_STENCIL_OP_INCREMENT_AND_CLAMP; - case StencilOp::IncrementWrap: return VK_STENCIL_OP_INCREMENT_AND_WRAP; - case StencilOp::Invert: return VK_STENCIL_OP_INVERT; - case StencilOp::Keep: return VK_STENCIL_OP_KEEP; - case StencilOp::Replace: return VK_STENCIL_OP_REPLACE; - case StencilOp::Zero: return VK_STENCIL_OP_ZERO; - default: return VK_STENCIL_OP_KEEP; + case StencilOp::DecrementSaturate: + return VK_STENCIL_OP_DECREMENT_AND_CLAMP; + case StencilOp::DecrementWrap: + return VK_STENCIL_OP_DECREMENT_AND_WRAP; + case StencilOp::IncrementSaturate: + return VK_STENCIL_OP_INCREMENT_AND_CLAMP; + case StencilOp::IncrementWrap: + return VK_STENCIL_OP_INCREMENT_AND_WRAP; + case StencilOp::Invert: + return VK_STENCIL_OP_INVERT; + case StencilOp::Keep: + return VK_STENCIL_OP_KEEP; + case StencilOp::Replace: + return VK_STENCIL_OP_REPLACE; + case StencilOp::Zero: + return VK_STENCIL_OP_ZERO; + default: + return VK_STENCIL_OP_KEEP; } } @@ -319,10 +505,12 @@ VkFilter VulkanUtil::translateFilterMode(TextureFilteringMode mode) { switch (mode) { - default: return VkFilter(0); + default: + return VkFilter(0); -#define CASE(SRC, DST) \ - case TextureFilteringMode::SRC: return VK_FILTER_##DST +#define CASE(SRC, DST) \ + case TextureFilteringMode::SRC: \ + return VK_FILTER_##DST CASE(Point, NEAREST); CASE(Linear, LINEAR); @@ -335,10 +523,12 @@ VkSamplerMipmapMode VulkanUtil::translateMipFilterMode(TextureFilteringMode mode { switch (mode) { - default: return VkSamplerMipmapMode(0); + default: + return VkSamplerMipmapMode(0); -#define CASE(SRC, DST) \ - case TextureFilteringMode::SRC: return VK_SAMPLER_MIPMAP_MODE_##DST +#define CASE(SRC, DST) \ + case TextureFilteringMode::SRC: \ + return VK_SAMPLER_MIPMAP_MODE_##DST CASE(Point, NEAREST); CASE(Linear, LINEAR); @@ -351,10 +541,12 @@ VkSamplerAddressMode VulkanUtil::translateAddressingMode(TextureAddressingMode m { switch (mode) { - default: return VkSamplerAddressMode(0); + default: + return VkSamplerAddressMode(0); -#define CASE(SRC, DST) \ - case TextureAddressingMode::SRC: return VK_SAMPLER_ADDRESS_MODE_##DST +#define CASE(SRC, DST) \ + case TextureAddressingMode::SRC: \ + return VK_SAMPLER_ADDRESS_MODE_##DST CASE(Wrap, REPEAT); CASE(ClampToEdge, CLAMP_TO_EDGE); @@ -374,8 +566,9 @@ VkCompareOp VulkanUtil::translateComparisonFunc(ComparisonFunc func) // TODO: need to report failures return VK_COMPARE_OP_ALWAYS; -#define CASE(FROM, TO) \ - case ComparisonFunc::FROM: return VK_COMPARE_OP_##TO +#define CASE(FROM, TO) \ + case ComparisonFunc::FROM: \ + return VK_COMPARE_OP_##TO CASE(Never, NEVER); CASE(Less, LESS); @@ -406,9 +599,12 @@ VkSamplerReductionMode VulkanUtil::translateReductionOp(TextureReductionOp op) { switch (op) { - case gfx::TextureReductionOp::Minimum: return VK_SAMPLER_REDUCTION_MODE_MIN; - case gfx::TextureReductionOp::Maximum: return VK_SAMPLER_REDUCTION_MODE_MAX; - default: return VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE; + case gfx::TextureReductionOp::Minimum: + return VK_SAMPLER_REDUCTION_MODE_MIN; + case gfx::TextureReductionOp::Maximum: + return VK_SAMPLER_REDUCTION_MODE_MAX; + default: + return VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE; } } @@ -431,12 +627,18 @@ VkSamplerReductionMode VulkanUtil::translateReductionOp(TextureReductionOp op) { switch (topology) { - case PrimitiveTopology::LineList: return VK_PRIMITIVE_TOPOLOGY_LINE_LIST; - case PrimitiveTopology::LineStrip: return VK_PRIMITIVE_TOPOLOGY_LINE_STRIP; - case PrimitiveTopology::TriangleList: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; - case PrimitiveTopology::TriangleStrip: return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP; - case PrimitiveTopology::PointList: return VK_PRIMITIVE_TOPOLOGY_POINT_LIST; - default: break; + case PrimitiveTopology::LineList: + return VK_PRIMITIVE_TOPOLOGY_LINE_LIST; + case PrimitiveTopology::LineStrip: + return VK_PRIMITIVE_TOPOLOGY_LINE_STRIP; + case PrimitiveTopology::TriangleList: + return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + case PrimitiveTopology::TriangleStrip: + return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP; + case PrimitiveTopology::PointList: + return VK_PRIMITIVE_TOPOLOGY_POINT_LIST; + default: + break; } assert(!"Unknown topology"); return VK_PRIMITIVE_TOPOLOGY_MAX_ENUM; @@ -446,20 +648,32 @@ VkImageLayout VulkanUtil::mapResourceStateToLayout(ResourceState state) { switch (state) { - case ResourceState::Undefined: return VK_IMAGE_LAYOUT_UNDEFINED; + case ResourceState::Undefined: + return VK_IMAGE_LAYOUT_UNDEFINED; case ResourceState::ShaderResource: case ResourceState::PixelShaderResource: - case ResourceState::NonPixelShaderResource: return VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; - case ResourceState::UnorderedAccess: return VK_IMAGE_LAYOUT_GENERAL; - case ResourceState::RenderTarget: return VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; - case ResourceState::DepthRead: return VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL; - case ResourceState::DepthWrite: return VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; - case ResourceState::Present: return VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; - case ResourceState::CopySource: return VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; - case ResourceState::CopyDestination: return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; - case ResourceState::ResolveSource: return VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; - case ResourceState::ResolveDestination: return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; - default: return VK_IMAGE_LAYOUT_UNDEFINED; + case ResourceState::NonPixelShaderResource: + return VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + case ResourceState::UnorderedAccess: + return VK_IMAGE_LAYOUT_GENERAL; + case ResourceState::RenderTarget: + return VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + case ResourceState::DepthRead: + return VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL; + case ResourceState::DepthWrite: + return VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + case ResourceState::Present: + return VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; + case ResourceState::CopySource: + return VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; + case ResourceState::CopyDestination: + return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; + case ResourceState::ResolveSource: + return VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; + case ResourceState::ResolveDestination: + return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; + default: + return VK_IMAGE_LAYOUT_UNDEFINED; } } @@ -546,8 +760,12 @@ Result AccelerationStructureBuildGeometryInfoBuilder::build( vkGeomData.triangles.maxVertex = geomDesc.content.triangles.vertexCount - 1; switch (geomDesc.content.triangles.indexFormat) { - case Format::R32_UINT: vkGeomData.triangles.indexType = VK_INDEX_TYPE_UINT32; break; - case Format::R16_UINT: vkGeomData.triangles.indexType = VK_INDEX_TYPE_UINT16; break; + case Format::R32_UINT: + vkGeomData.triangles.indexType = VK_INDEX_TYPE_UINT32; + break; + case Format::R16_UINT: + vkGeomData.triangles.indexType = VK_INDEX_TYPE_UINT16; + break; case Format::Unknown: vkGeomData.triangles.indexType = VK_INDEX_TYPE_NONE_KHR; break; |
