summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci.yml4
m---------external/slang-rhi0
-rw-r--r--tests/bugs/texture2d-gather.hlsl.2.expected.pngbin0 -> 33552 bytes
-rw-r--r--tests/bugs/texture2d-gather.hlsl.3.expected.pngbin0 -> 33552 bytes
-rw-r--r--tests/bugs/texture2d-gather.hlsl.expected.pngbin0 -> 33552 bytes
-rw-r--r--tests/render/multiple-stage-io-locations.slang.3.expected.pngbin0 -> 36676 bytes
-rw-r--r--tools/slang-test/options.cpp5
-rw-r--r--tools/slang-test/options.h3
-rw-r--r--tools/slang-test/slang-test-main.cpp29
9 files changed, 33 insertions, 8 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 611b40179..a8526dcaf 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -170,6 +170,7 @@ jobs:
-category ${{ matrix.test-category }} \
-api all-cpu \
-expected-failure-list tests/expected-failure-github.txt \
+ -skip-reference-image-generation \
-show-adapter-info
elif [[ "${{matrix.has-gpu}}" == "true" ]]; then
"$bin_dir/slang-test" \
@@ -179,6 +180,7 @@ jobs:
-expected-failure-list tests/expected-failure-github.txt \
-expected-failure-list tests/expected-failure-record-replay-tests.txt \
-expected-failure-list tests/expected-failure-github-runner.txt \
+ -skip-reference-image-generation \
-show-adapter-info
else
"$bin_dir/slang-test" \
@@ -188,6 +190,7 @@ jobs:
-expected-failure-list tests/expected-failure-github.txt \
-expected-failure-list tests/expected-failure-record-replay-tests.txt \
-expected-failure-list tests/expected-failure-github-runner.txt \
+ -skip-reference-image-generation \
-show-adapter-info
fi
- name: Run Slang examples
@@ -215,6 +218,7 @@ jobs:
-emit-spirv-via-glsl \
-api vk \
-expected-failure-list tests/expected-failure.txt \
+ -skip-reference-image-generation \
-show-adapter-info
- uses: actions/upload-artifact@v4
if: steps.filter.outputs.should-run == 'true' && ! matrix.full-gpu-tests
diff --git a/external/slang-rhi b/external/slang-rhi
-Subproject 6b6cc8f9513732c2f8627eeefce7ea7e1a95415
+Subproject c1cc2a2163525e55da85af32ad17b80b66730e1
diff --git a/tests/bugs/texture2d-gather.hlsl.2.expected.png b/tests/bugs/texture2d-gather.hlsl.2.expected.png
new file mode 100644
index 000000000..a20b53acf
--- /dev/null
+++ b/tests/bugs/texture2d-gather.hlsl.2.expected.png
Binary files differ
diff --git a/tests/bugs/texture2d-gather.hlsl.3.expected.png b/tests/bugs/texture2d-gather.hlsl.3.expected.png
new file mode 100644
index 000000000..a20b53acf
--- /dev/null
+++ b/tests/bugs/texture2d-gather.hlsl.3.expected.png
Binary files differ
diff --git a/tests/bugs/texture2d-gather.hlsl.expected.png b/tests/bugs/texture2d-gather.hlsl.expected.png
new file mode 100644
index 000000000..a20b53acf
--- /dev/null
+++ b/tests/bugs/texture2d-gather.hlsl.expected.png
Binary files differ
diff --git a/tests/render/multiple-stage-io-locations.slang.3.expected.png b/tests/render/multiple-stage-io-locations.slang.3.expected.png
new file mode 100644
index 000000000..3333a12d7
--- /dev/null
+++ b/tests/render/multiple-stage-io-locations.slang.3.expected.png
Binary files differ
diff --git a/tools/slang-test/options.cpp b/tools/slang-test/options.cpp
index d12a9bf30..da8702031 100644
--- a/tools/slang-test/options.cpp
+++ b/tools/slang-test/options.cpp
@@ -81,6 +81,7 @@ static bool _isSubCommand(const char* arg)
" -server-count <n> Set number of test servers (default: 1)\n"
" -show-adapter-info Show detailed adapter information\n"
" -generate-hlsl-baselines Generate HLSL test baselines\n"
+ " -skip-reference-image-generation Skip generating reference images for render tests\n"
" -emit-spirv-via-glsl Emit SPIR-V through GLSL instead of directly\n"
" -expected-failure-list <file> Specify file containing expected failures\n"
" -use-shared-library Run tests in-process using shared library\n"
@@ -390,6 +391,10 @@ static bool _isSubCommand(const char* arg)
{
optionsOut->showAdapterInfo = true;
}
+ else if (strcmp(arg, "-skip-reference-image-generation") == 0)
+ {
+ optionsOut->skipReferenceImageGeneration = true;
+ }
else
{
stdError.print("unknown option '%s'\n", arg);
diff --git a/tools/slang-test/options.h b/tools/slang-test/options.h
index aec930e38..bd8ee5499 100644
--- a/tools/slang-test/options.h
+++ b/tools/slang-test/options.h
@@ -72,6 +72,9 @@ struct Options
// force generation of baselines for HLSL tests
bool generateHLSLBaselines = false;
+ // Skip generation of reference images for render tests, assume they already exist
+ bool skipReferenceImageGeneration = false;
+
// Whether to skip the step of creating test devices to check if an API is actually available.
bool skipApiDetection = false;
diff --git a/tools/slang-test/slang-test-main.cpp b/tools/slang-test/slang-test-main.cpp
index 51dcf79ce..3f7e41cf6 100644
--- a/tools/slang-test/slang-test-main.cpp
+++ b/tools/slang-test/slang-test-main.cpp
@@ -3863,12 +3863,19 @@ TestResult runHLSLRenderComparisonTestImpl(
String expectedOutput;
String actualOutput;
- TestResult hlslResult =
- doRenderComparisonTestRun(context, input, expectedArg, ".expected", &expectedOutput);
- if (hlslResult != TestResult::Pass)
+ // Run the expected test case only if we're not skipping reference image generation
+ TestResult hlslResult = TestResult::Pass;
+ if (!context->options.skipReferenceImageGeneration)
{
- return hlslResult;
+ hlslResult =
+ doRenderComparisonTestRun(context, input, expectedArg, ".expected", &expectedOutput);
+ if (hlslResult != TestResult::Pass)
+ {
+ return hlslResult;
+ }
}
+
+ // Always run the actual test case
TestResult slangResult =
doRenderComparisonTestRun(context, input, actualArg, ".actual", &actualOutput);
if (slangResult != TestResult::Pass)
@@ -3881,7 +3888,12 @@ TestResult runHLSLRenderComparisonTestImpl(
return TestResult::Pass;
}
- Slang::File::writeAllText(outputStem + ".expected", expectedOutput);
+ // Save the expected output if we generated it
+ if (!context->options.skipReferenceImageGeneration)
+ {
+ Slang::File::writeAllText(outputStem + ".expected", expectedOutput);
+ }
+
Slang::File::writeAllText(outputStem + ".actual", actualOutput);
if (hlslResult == TestResult::Fail)
@@ -3889,9 +3901,10 @@ TestResult runHLSLRenderComparisonTestImpl(
if (slangResult == TestResult::Fail)
return TestResult::Fail;
- if (!StringUtil::areLinesEqual(
- actualOutput.getUnownedSlice(),
- expectedOutput.getUnownedSlice()))
+ // Compare text output only if we generated the expected output
+ if (!context->options.skipReferenceImageGeneration && !StringUtil::areLinesEqual(
+ actualOutput.getUnownedSlice(),
+ expectedOutput.getUnownedSlice()))
{
context->getTestReporter()->dumpOutputDifference(expectedOutput, actualOutput);