summaryrefslogtreecommitdiffstats
path: root/tools/render-test
diff options
context:
space:
mode:
Diffstat (limited to 'tools/render-test')
-rw-r--r--tools/render-test/options.cpp16
-rw-r--r--tools/render-test/options.h9
-rw-r--r--tools/render-test/slang-support.cpp2
3 files changed, 27 insertions, 0 deletions
diff --git a/tools/render-test/options.cpp b/tools/render-test/options.cpp
index a486c8b15..53f88b7a9 100644
--- a/tools/render-test/options.cpp
+++ b/tools/render-test/options.cpp
@@ -76,6 +76,22 @@ void parseOptions(int* argc, char** argv)
{
gOptions.mode = Mode::GLSLCrossCompile;
}
+ else if( strcmp(arg, "-xslang") == 0 )
+ {
+ // This is an option that we want to pass along to Slang
+
+ if( argCursor == argEnd )
+ {
+ fprintf(stderr, "expected argument for '%s' option\n", arg);
+ exit(1);
+ }
+ if( gOptions.slangArgCount == kMaxSlangArgs )
+ {
+ fprintf(stderr, "maximum number of '%s' options exceeded (%d)\n", arg, kMaxSlangArgs);
+ exit(1);
+ }
+ gOptions.slangArgs[gOptions.slangArgCount++] = *argCursor++;
+ }
else
{
fprintf(stderr, "unknown option '%s'\n", arg);
diff --git a/tools/render-test/options.h b/tools/render-test/options.h
index 0731a5dc9..fbc615d56 100644
--- a/tools/render-test/options.h
+++ b/tools/render-test/options.h
@@ -25,12 +25,21 @@ enum class Mode
GLSLCrossCompile,
};
+enum
+{
+ // maximum number of command-line arguments to pass along to slang
+ kMaxSlangArgs = 16,
+};
+
struct Options
{
char const* appName = "render-test";
char const* sourcePath = nullptr;
char const* outputPath = nullptr;
Mode mode = Mode::Slang;
+
+ char const* slangArgs[kMaxSlangArgs];
+ int slangArgCount = 0;
};
extern Options gOptions;
diff --git a/tools/render-test/slang-support.cpp b/tools/render-test/slang-support.cpp
index bec651e87..8db62ebef 100644
--- a/tools/render-test/slang-support.cpp
+++ b/tools/render-test/slang-support.cpp
@@ -35,6 +35,8 @@ struct SlangShaderCompilerWrapper : public ShaderCompiler
}
spAddPreprocessorDefine(slangRequest, langDefine, "1");
+ spProcessCommandLineArguments(slangRequest, &gOptions.slangArgs[0], gOptions.slangArgCount);
+
int vertexTranslationUnit = 0;
int fragmentTranslationUnit = 0;
if( sourceLanguage == SLANG_SOURCE_LANGUAGE_GLSL )