diff options
| author | Yong He <yonghe@outlook.com> | 2022-05-05 10:48:14 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-05 10:48:14 -0700 |
| commit | 3088d901fee6447b6d80fa67f258626ece4408dc (patch) | |
| tree | 95b7d6bcc4b549e58d705fcf0056dde71a52ae8e /tools/gfx/vulkan/vk-util.cpp | |
| parent | aa03cea0da38b2950e6f8694dc8b1405352eda66 (diff) | |
Various vulkan/glsl fixes. (#2222)
* Various vulkan/glsl fixes.
* Fix.
* Fix.
* Canonicalize type constraints for name mangling.
Co-authored-by: Yong He <yhe@nvidia.com>
Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com>
Diffstat (limited to 'tools/gfx/vulkan/vk-util.cpp')
| -rw-r--r-- | tools/gfx/vulkan/vk-util.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tools/gfx/vulkan/vk-util.cpp b/tools/gfx/vulkan/vk-util.cpp index 8e2a187a3..251e91cab 100644 --- a/tools/gfx/vulkan/vk-util.cpp +++ b/tools/gfx/vulkan/vk-util.cpp @@ -113,6 +113,50 @@ namespace gfx { } } +VkImageAspectFlags VulkanUtil::getAspectMask(TextureAspect aspect, VkFormat format) +{ + switch (aspect) + { + case TextureAspect::Default: + switch (format) + { + case VK_FORMAT_D16_UNORM_S8_UINT: + case VK_FORMAT_D24_UNORM_S8_UINT: + case VK_FORMAT_D32_SFLOAT_S8_UINT: + 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 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; + } +} + /* static */SlangResult VulkanUtil::toSlangResult(VkResult res) { return (res == VK_SUCCESS) ? SLANG_OK : SLANG_FAIL; @@ -454,6 +498,19 @@ VkStencilOpState VulkanUtil::translateStencilState(DepthStencilOpDesc desc) return rs; } +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; + } +} + /* static */Slang::Result VulkanUtil::handleFail(VkResult res) { if (res != VK_SUCCESS) |
