summaryrefslogtreecommitdiff
path: root/tools/gfx/vulkan/vk-util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gfx/vulkan/vk-util.cpp')
-rw-r--r--tools/gfx/vulkan/vk-util.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/tools/gfx/vulkan/vk-util.cpp b/tools/gfx/vulkan/vk-util.cpp
index 218801d7a..46ffb01fd 100644
--- a/tools/gfx/vulkan/vk-util.cpp
+++ b/tools/gfx/vulkan/vk-util.cpp
@@ -30,6 +30,53 @@ namespace gfx {
return (res == VK_SUCCESS) ? SLANG_OK : SLANG_FAIL;
}
+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_RAY_GENERATION:
+ return VK_SHADER_STAGE_RAYGEN_BIT_KHR;
+ case SLANG_STAGE_VERTEX:
+ return VK_SHADER_STAGE_VERTEX_BIT;
+ default:
+ assert(!"unsupported stage.");
+ return VkShaderStageFlags(-1);
+ }
+}
+
+VkPipelineBindPoint VulkanUtil::getPipelineBindPoint(PipelineType pipelineType)
+{
+ switch (pipelineType)
+ {
+ case gfx::PipelineType::Graphics:
+ return VK_PIPELINE_BIND_POINT_GRAPHICS;
+ case gfx::PipelineType::Compute:
+ return VK_PIPELINE_BIND_POINT_COMPUTE;
+ case gfx::PipelineType::RayTracing:
+ return VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR;
+ default:
+ return VkPipelineBindPoint(-1);
+ }
+}
+
/* static */Slang::Result VulkanUtil::handleFail(VkResult res)
{
if (res != VK_SUCCESS)