diff options
Diffstat (limited to 'tools/render-test')
| -rw-r--r-- | tools/render-test/options.cpp | 16 | ||||
| -rw-r--r-- | tools/render-test/options.h | 9 | ||||
| -rw-r--r-- | tools/render-test/slang-support.cpp | 2 |
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 ) |
