summaryrefslogtreecommitdiff
path: root/tools/slang-test/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/slang-test/main.cpp')
-rw-r--r--tools/slang-test/main.cpp56
1 files changed, 35 insertions, 21 deletions
diff --git a/tools/slang-test/main.cpp b/tools/slang-test/main.cpp
index cdea6b4dc..5b4337d12 100644
--- a/tools/slang-test/main.cpp
+++ b/tools/slang-test/main.cpp
@@ -1116,7 +1116,7 @@ TestResult runGLSLComparisonTest(TestInput& input)
return kTestResult_Pass;
}
-TestResult doComputeComparisonTestRunImpl(TestInput& input, const char * langOption, String referenceOutput)
+TestResult runComputeComparisonImpl(TestInput& input, const char * langOption, String referenceOutput)
{
// TODO: delete any existing files at the output path(s) to avoid stale outputs leading to a false pass
auto filePath999 = input.filePath;
@@ -1138,32 +1138,36 @@ TestResult doComputeComparisonTestRunImpl(TestInput& input, const char * langOpt
if (spawnAndWait(outputStem, spawner) != kOSError_None)
{
+ printf("error spawning render-test\n");
return kTestResult_Fail;
}
auto actualOutput = getOutput(spawner);
- auto expectedOutput = getExpectedOutput(outputStem);
- if(actualOutput != expectedOutput)
- {
- String actualOutputPath = outputStem + ".actual";
- Slang::File::WriteAllText(actualOutputPath, actualOutput);
-
- maybeDumpOutput(expectedOutput, actualOutput);
-
- return kTestResult_Fail;
- }
-
// check against reference output
- if (!File::Exists(outputStem + ".actual.txt"))
+ if (!File::Exists(outputStem + ".actual.txt"))
+ {
+ printf("render-test not producing expected outputs.\n");
+ printf("render-test output:\n%s\n", actualOutput.Buffer());
return kTestResult_Fail;
- if (!File::Exists(referenceOutput))
+ }
+ if (!File::Exists(referenceOutput))
+ {
+ printf("referenceOutput %s not found.\n", referenceOutput.Buffer());
return kTestResult_Fail;
-
- auto actualProgramOutput = Split(File::ReadAllText(outputStem + ".actual.txt"), '\n');
+ }
+ auto actualOutputContent = File::ReadAllText(outputStem + ".actual.txt");
+ auto actualProgramOutput = Split(actualOutputContent, '\n');
auto referenceProgramOutput = Split(File::ReadAllText(referenceOutput), '\n');
- if (actualProgramOutput.Count() < referenceProgramOutput.Count())
+ auto printOutput = [&]()
+ {
+ printf("output mismatch! actual output: {\n%s\n}, \n%s\n", actualOutputContent.Buffer(), actualOutput.Buffer());
+ };
+ if (actualProgramOutput.Count() < referenceProgramOutput.Count())
+ {
+ printOutput();
return kTestResult_Fail;
+ }
for (int i = 0; i < (int)referenceProgramOutput.Count(); i++)
{
auto reference = referenceProgramOutput[i];
@@ -1174,7 +1178,10 @@ TestResult doComputeComparisonTestRunImpl(TestInput& input, const char * langOpt
auto val = StringToFloat(reference);
auto uval = String((unsigned int)FloatAsInt(val), 16).ToUpper();
if (actual != uval)
+ {
+ printOutput();
return kTestResult_Fail;
+ }
else
return kTestResult_Pass;
}
@@ -1182,9 +1189,14 @@ TestResult doComputeComparisonTestRunImpl(TestInput& input, const char * langOpt
return kTestResult_Pass;
}
-TestResult doSlangComputeComparisonTest(TestInput& input)
+TestResult runSlangComputeComparisonTest(TestInput& input)
+{
+ return runComputeComparisonImpl(input, "-slang -compute", input.outputStem + ".expected.txt");
+}
+
+TestResult runSlangRenderComputeComparisonTest(TestInput& input)
{
- return doComputeComparisonTestRunImpl(input, "-slang -compute", input.outputStem + ".expected.txt");
+ return runComputeComparisonImpl(input, "-slang -gcompute", input.outputStem + ".expected.txt");
}
TestResult doRenderComparisonTestRun(TestInput& input, char const* langOption, char const* outputKind, String* outOutput)
@@ -1385,16 +1397,18 @@ TestResult runTest(
{ "COMPARE_HLSL_RENDER", &runHLSLRenderComparisonTest },
{ "COMPARE_HLSL_CROSS_COMPILE_RENDER", &runHLSLCrossCompileRenderComparisonTest},
{ "COMPARE_HLSL_GLSL_RENDER", &runHLSLAndGLSLComparisonTest },
- { "COMPARE_COMPUTE", &doSlangComputeComparisonTest},
+ { "COMPARE_COMPUTE", runSlangComputeComparisonTest},
+ { "COMPARE_RENDER_COMPUTE", &runSlangRenderComputeComparisonTest },
+
#else
{ "COMPARE_HLSL", &skipTest },
{ "COMPARE_HLSL_RENDER", &skipTest },
{ "COMPARE_HLSL_CROSS_COMPILE_RENDER", &skipTest},
{ "COMPARE_HLSL_GLSL_RENDER", &skipTest },
{ "COMPARE_COMPUTE", &skipTest},
+ { "COMPARE_RENDER_COMPUTE", &skipTest },
#endif
{ "COMPARE_GLSL", &runGLSLComparisonTest },
-
{ "CROSS_COMPILE", &runCrossCompilerTest },
{ "EVAL", &runEvalTest },
{ nullptr, nullptr },