diff options
Diffstat (limited to 'tools/gfx/vulkan/vk-shader-program.cpp')
| -rw-r--r-- | tools/gfx/vulkan/vk-shader-program.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/tools/gfx/vulkan/vk-shader-program.cpp b/tools/gfx/vulkan/vk-shader-program.cpp index 1627c95a7..2dd9b0326 100644 --- a/tools/gfx/vulkan/vk-shader-program.cpp +++ b/tools/gfx/vulkan/vk-shader-program.cpp @@ -74,10 +74,20 @@ Result ShaderProgramImpl::createShaderModule( slang::EntryPointReflection* entryPointInfo, List<ComPtr<ISlangBlob>>& kernelCodes) { - ComPtr<ISlangBlob> linkedKernel = m_device->m_glslang.linkSPIRV(kernelCodes); - if (!linkedKernel) + ComPtr<ISlangBlob> linkedKernel; + ComPtr<slang::ISession> slangSession; + m_device->getSlangSession(slangSession.writeRef()); + if (kernelCodes.getCount() == 1) { - return SLANG_FAIL; + linkedKernel = kernelCodes[0]; + } + else + { + linkedKernel = m_device->m_glslang.linkSPIRV(kernelCodes); + if (!linkedKernel) + { + return SLANG_FAIL; + } } m_codeBlobs.add(linkedKernel); |
