diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2024-10-29 14:49:26 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-29 14:49:26 +0800 |
| commit | f65d756bff8d4c5cbc15bd0322a2ae8e6b896a21 (patch) | |
| tree | ea1d61342cd29368e19135000ec2948813096205 /tools/gfx/vulkan/vk-util.cpp | |
| parent | a729c15e9dce9f5116a38afc66329ab2ca4cea54 (diff) | |
format
* format
* Minor test fixes
* enable checking cpp format in ci
Diffstat (limited to 'tools/gfx/vulkan/vk-util.cpp')
| -rw-r--r-- | tools/gfx/vulkan/vk-util.cpp | 624 |
1 files changed, 245 insertions, 379 deletions
diff --git a/tools/gfx/vulkan/vk-util.cpp b/tools/gfx/vulkan/vk-util.cpp index 1a571c812..696e80fc7 100644 --- a/tools/gfx/vulkan/vk-util.cpp +++ b/tools/gfx/vulkan/vk-util.cpp @@ -1,121 +1,123 @@ // vk-util.cpp #include "vk-util.h" + #include "core/slang-math.h" -#include <stdlib.h> #include <stdio.h> +#include <stdlib.h> -namespace gfx { +namespace gfx +{ -/* static */VkFormat VulkanUtil::getVkFormat(Format format) +/* static */ VkFormat VulkanUtil::getVkFormat(Format format) { 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; } } @@ -132,38 +134,26 @@ 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; } } -/* static */SlangResult VulkanUtil::toSlangResult(VkResult res) +/* static */ SlangResult VulkanUtil::toSlangResult(VkResult res) { return (res == VK_SUCCESS) ? SLANG_OK : SLANG_FAIL; } @@ -172,37 +162,21 @@ 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); } } @@ -212,29 +186,18 @@ 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(); } @@ -243,23 +206,14 @@ 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; } } @@ -267,15 +221,10 @@ 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; } } @@ -283,13 +232,9 @@ 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; } } @@ -297,13 +242,9 @@ 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; } } @@ -311,44 +252,25 @@ 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; } } @@ -356,38 +278,24 @@ 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; } } -VkPrimitiveTopology VulkanUtil::translatePrimitiveTypeToListTopology( - PrimitiveType primitiveType) +VkPrimitiveTopology VulkanUtil::translatePrimitiveTypeToListTopology(PrimitiveType primitiveType) { 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; } } @@ -395,24 +303,15 @@ 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; } } @@ -420,12 +319,10 @@ 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); @@ -438,12 +335,10 @@ 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); @@ -456,12 +351,10 @@ 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); @@ -481,9 +374,8 @@ 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); @@ -514,16 +406,13 @@ 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; } } -/* static */Slang::Result VulkanUtil::handleFail(VkResult res) +/* static */ Slang::Result VulkanUtil::handleFail(VkResult res) { if (res != VK_SUCCESS) { @@ -532,29 +421,22 @@ VkSamplerReductionMode VulkanUtil::translateReductionOp(TextureReductionOp op) return toSlangResult(res); } -/* static */void VulkanUtil::checkFail(VkResult res) +/* static */ void VulkanUtil::checkFail(VkResult res) { assert(res != VK_SUCCESS); assert(!"Vulkan check failed"); - } -/* static */VkPrimitiveTopology VulkanUtil::getVkPrimitiveTopology(PrimitiveTopology topology) +/* static */ VkPrimitiveTopology VulkanUtil::getVkPrimitiveTopology(PrimitiveTopology topology) { 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; @@ -564,32 +446,20 @@ 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; } } @@ -676,12 +546,8 @@ 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; |
