diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2017-06-19 10:23:16 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-06-19 10:23:16 -0700 |
| commit | bb9ca29160f5d95f3860504262693ea650d96be5 (patch) | |
| tree | 04f502283ed818f661e368b3d8d1ba5ce875d1d2 /tools/render-test | |
| parent | cafed774d99f95bce6f182599913f3417dc68a3a (diff) | |
| parent | 634522da69b14b38c15b14d6b717b1289812e9bb (diff) | |
Merge pull request #29 from tfoleyNV/auto-import
Allow for automatic importing of Slang code
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 ) |
