@@ -71,53 +71,16 @@ VkPipelineShaderStageCreateInfo ShaderProgramImpl::compileEntryPoint(
71
71
return shaderStageCreateInfo;
72
72
}
73
73
74
- static ComPtr<ISlangBlob> linkUsingSPIRVTools (List<ComPtr<ISlangBlob> > kernelCodes)
75
- {
76
- spvtools::Context context (SPV_ENV_UNIVERSAL_1_5);
77
- spvtools::LinkerOptions options;
78
- spvtools::MessageConsumer consumer = [](spv_message_level_t level,
79
- const char * source,
80
- const spv_position_t & position,
81
- const char * message)
82
- {
83
- printf (" SPIRV-TOOLS: %s\n " , message);
84
- printf (" SPIRV-TOOLS: %s\n " , source);
85
- printf (" SPIRV-TOOLS: %zu:%zu\n " , position.index , position.column );
86
- };
87
- context.SetMessageConsumer (consumer);
88
- std::vector<uint32_t *> binaries;
89
- std::vector<size_t > binary_sizes;
90
- for (auto kernelCode : kernelCodes)
91
- {
92
- binaries.push_back ((uint32_t *)kernelCode->getBufferPointer ());
93
- binary_sizes.push_back (kernelCode->getBufferSize () / sizeof (uint32_t ));
94
- }
95
-
96
- std::vector<uint32_t > linked_binary;
97
-
98
- spvtools::Link (
99
- context,
100
- binaries.data (),
101
- binary_sizes.data (),
102
- binaries.size (),
103
- &linked_binary,
104
- options);
105
-
106
- // Create a blob to hold the linked binary
107
- ComPtr<ISlangBlob> linkedKernelCode;
108
-
109
- // Replace kernel code with linked binary
110
- // Creates a new blob with the linked binary
111
- linkedKernelCode = RawBlob::create (linked_binary.data (), linked_binary.size () * sizeof (uint32_t ));
112
-
113
- return linkedKernelCode;
114
- }
115
-
116
74
Result ShaderProgramImpl::createShaderModule (
117
75
slang::EntryPointReflection* entryPointInfo,
118
76
List<ComPtr<ISlangBlob>>& kernelCodes)
119
77
{
120
- ComPtr<ISlangBlob> linkedKernel = linkUsingSPIRVTools (kernelCodes);
78
+ ComPtr<ISlangBlob> linkedKernel = m_device->m_glslang .linkSPIRV (kernelCodes);
79
+ if (!linkedKernel)
80
+ {
81
+ return SLANG_FAIL;
82
+ }
83
+
121
84
m_codeBlobs.add (linkedKernel);
122
85
123
86
VkShaderModule shaderModule;
0 commit comments