MCPcopy Create free account
hub / github.com/KhronosGroup/glslang / TEST_P

Function TEST_P

gtests/GlslMapIO.FromFile.cpp:237–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

235}
236
237TEST_P(GlslMapIOTest, FromFile)
238{
239 const auto& fileNames = GetParam().fileNames;
240 Semantics semantics = GetParam().semantics;
241 const size_t fileCount = fileNames.size();
242 const EShMessages controls = DeriveOptions(Source::GLSL, semantics, Target::BothASTAndSpv);
243 GlslangResult result;
244
245 // Compile each input shader file.
246 bool success = true;
247 std::vector<std::unique_ptr<glslang::TShader>> shaders;
248 for (size_t i = 0; i < fileCount; ++i) {
249 std::string contents;
250 tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i],
251 "input", &contents);
252 shaders.emplace_back(
253 new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i]))));
254 auto* shader = shaders.back().get();
255
256 shader->setAutoMapLocations(true);
257 shader->setAutoMapBindings(true);
258
259 if (controls & EShMsgSpvRules) {
260 if (controls & EShMsgVulkanRules) {
261 shader->setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl
262 : glslang::EShSourceGlsl,
263 shader->getStage(), glslang::EShClientVulkan, 100);
264 shader->setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_1);
265 shader->setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_0);
266 } else {
267 shader->setEnvInput((controls & EShMsgReadHlsl) ? glslang::EShSourceHlsl
268 : glslang::EShSourceGlsl,
269 shader->getStage(), glslang::EShClientOpenGL, 100);
270 shader->setEnvClient(glslang::EShClientOpenGL, glslang::EShTargetOpenGL_450);
271 shader->setEnvTarget(glslang::EshTargetSpv, glslang::EShTargetSpv_1_0);
272 }
273 }
274
275 success &= compile(shader, contents, "", controls);
276
277 result.shaderResults.push_back(
278 { fileNames[i], shader->getInfoLog(), shader->getInfoDebugLog() });
279 }
280
281 // Link all of them.
282 glslang::TProgram program;
283 for (const auto& shader : shaders) program.addShader(shader.get());
284 success &= program.link(controls);
285 result.linkingOutput = program.getInfoLog();
286 result.linkingError = program.getInfoDebugLog();
287
288 glslang::TIoMapResolver *resolver;
289 for (unsigned stage = 0; stage < EShLangCount; stage++) {
290 resolver = program.getGlslIoResolver((EShLanguage)stage);
291 if (resolver)
292 break;
293 }
294 glslang::TIoMapper *ioMapper = glslang::GetGlslIoMapper();

Callers

nothing calls this directly

Calls 15

DeriveOptionsFunction · 0.85
GetShaderStageFunction · 0.85
GetSuffixFunction · 0.85
GetGlslIoMapperFunction · 0.85
GlslangToSpvFunction · 0.85
DisassembleFunction · 0.85
getInfoLogMethod · 0.80
getInfoDebugLogMethod · 0.80
getGlslIoResolverMethod · 0.80
mapIOMethod · 0.80
getAllMessagesMethod · 0.80
verifyIOMappingFunction · 0.70

Tested by

no test coverage detected