From 7838459ef71fe5f0979f30df8348a6981363d6c8 Mon Sep 17 00:00:00 2001 From: azhirnov Date: Sun, 4 Oct 2020 23:23:28 +0300 Subject: Added Vulkan implementation --- Graphics/ShaderTools/src/GLSLangUtils.cpp | 24 ++++++++++++++--------- Graphics/ShaderTools/src/SPIRVShaderResources.cpp | 24 ++++++++++++++--------- 2 files changed, 30 insertions(+), 18 deletions(-) (limited to 'Graphics/ShaderTools') diff --git a/Graphics/ShaderTools/src/GLSLangUtils.cpp b/Graphics/ShaderTools/src/GLSLangUtils.cpp index ef57e27b..4382f67f 100644 --- a/Graphics/ShaderTools/src/GLSLangUtils.cpp +++ b/Graphics/ShaderTools/src/GLSLangUtils.cpp @@ -70,18 +70,24 @@ void FinalizeGlslang() static EShLanguage ShaderTypeToShLanguage(SHADER_TYPE ShaderType) { - static_assert(SHADER_TYPE_LAST == 0x080, "Please handle the new shader type in the switch below"); + static_assert(SHADER_TYPE_LAST == 0x2000, "Please handle the new shader type in the switch below"); switch (ShaderType) { // clang-format off - case SHADER_TYPE_VERTEX: return EShLangVertex; - case SHADER_TYPE_HULL: return EShLangTessControl; - case SHADER_TYPE_DOMAIN: return EShLangTessEvaluation; - case SHADER_TYPE_GEOMETRY: return EShLangGeometry; - case SHADER_TYPE_PIXEL: return EShLangFragment; - case SHADER_TYPE_COMPUTE: return EShLangCompute; - case SHADER_TYPE_AMPLIFICATION: return EShLangTaskNV; - case SHADER_TYPE_MESH: return EShLangMeshNV; + case SHADER_TYPE_VERTEX: return EShLangVertex; + case SHADER_TYPE_HULL: return EShLangTessControl; + case SHADER_TYPE_DOMAIN: return EShLangTessEvaluation; + case SHADER_TYPE_GEOMETRY: return EShLangGeometry; + case SHADER_TYPE_PIXEL: return EShLangFragment; + case SHADER_TYPE_COMPUTE: return EShLangCompute; + case SHADER_TYPE_AMPLIFICATION: return EShLangTaskNV; + case SHADER_TYPE_MESH: return EShLangMeshNV; + case SHADER_TYPE_RAY_GEN: return EShLangRayGen; + case SHADER_TYPE_RAY_MISS: return EShLangMiss; + case SHADER_TYPE_RAY_CLOSEST_HIT: return EShLangClosestHit; + case SHADER_TYPE_RAY_ANY_HIT: return EShLangAnyHit; + case SHADER_TYPE_RAY_INTERSECTION: return EShLangIntersect; + case SHADER_TYPE_CALLABLE: return EShLangCallable; // clang-format on default: UNEXPECTED("Unexpected shader type"); diff --git a/Graphics/ShaderTools/src/SPIRVShaderResources.cpp b/Graphics/ShaderTools/src/SPIRVShaderResources.cpp index 2ba5d90a..b20394a4 100644 --- a/Graphics/ShaderTools/src/SPIRVShaderResources.cpp +++ b/Graphics/ShaderTools/src/SPIRVShaderResources.cpp @@ -150,18 +150,24 @@ ShaderResourceDesc SPIRVShaderResourceAttribs::GetResourceDesc() const static spv::ExecutionModel ShaderTypeToExecutionModel(SHADER_TYPE ShaderType) { - static_assert(SHADER_TYPE_LAST == 0x080, "Please handle the new shader type in the switch below"); + static_assert(SHADER_TYPE_LAST == 0x2000, "Please handle the new shader type in the switch below"); switch (ShaderType) { // clang-format off - case SHADER_TYPE_VERTEX: return spv::ExecutionModelVertex; - case SHADER_TYPE_HULL: return spv::ExecutionModelTessellationControl; - case SHADER_TYPE_DOMAIN: return spv::ExecutionModelTessellationEvaluation; - case SHADER_TYPE_GEOMETRY: return spv::ExecutionModelGeometry; - case SHADER_TYPE_PIXEL: return spv::ExecutionModelFragment; - case SHADER_TYPE_COMPUTE: return spv::ExecutionModelGLCompute; - case SHADER_TYPE_AMPLIFICATION: return spv::ExecutionModelTaskNV; - case SHADER_TYPE_MESH: return spv::ExecutionModelMeshNV; + case SHADER_TYPE_VERTEX: return spv::ExecutionModelVertex; + case SHADER_TYPE_HULL: return spv::ExecutionModelTessellationControl; + case SHADER_TYPE_DOMAIN: return spv::ExecutionModelTessellationEvaluation; + case SHADER_TYPE_GEOMETRY: return spv::ExecutionModelGeometry; + case SHADER_TYPE_PIXEL: return spv::ExecutionModelFragment; + case SHADER_TYPE_COMPUTE: return spv::ExecutionModelGLCompute; + case SHADER_TYPE_AMPLIFICATION: return spv::ExecutionModelTaskNV; + case SHADER_TYPE_MESH: return spv::ExecutionModelMeshNV; + case SHADER_TYPE_RAY_GEN: return spv::ExecutionModelRayGenerationKHR; + case SHADER_TYPE_RAY_MISS: return spv::ExecutionModelMissKHR; + case SHADER_TYPE_RAY_CLOSEST_HIT: return spv::ExecutionModelClosestHitKHR; + case SHADER_TYPE_RAY_ANY_HIT: return spv::ExecutionModelAnyHitKHR; + case SHADER_TYPE_RAY_INTERSECTION: return spv::ExecutionModelIntersectionKHR; + case SHADER_TYPE_CALLABLE: return spv::ExecutionModelCallableKHR; // clang-format on default: UNEXPECTED("Unexpected shader type"); -- cgit v1.2.3