summaryrefslogtreecommitdiffstats
path: root/tools/render-test/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/render-test/options.cpp')
-rw-r--r--tools/render-test/options.cpp106
1 files changed, 52 insertions, 54 deletions
diff --git a/tools/render-test/options.cpp b/tools/render-test/options.cpp
index bd5640020..965a81e27 100644
--- a/tools/render-test/options.cpp
+++ b/tools/render-test/options.cpp
@@ -7,6 +7,7 @@
#include <string.h>
#include "../../source/core/slang-writer.h"
+#include "../../source/core/slang-render-api-util.h"
namespace renderer_test {
@@ -14,14 +15,34 @@ static const Options gDefaultOptions;
Options gOptions;
-// Only set it, if the
-void setDefaultRendererType(RendererType type)
+static gfx::RendererType _toRenderType(Slang::RenderApiType apiType)
{
- gOptions.rendererType = (gOptions.rendererType == RendererType::Unknown) ? type : gOptions.rendererType;
+ using namespace Slang;
+ switch (apiType)
+ {
+ case RenderApiType::D3D11: return gfx::RendererType::DirectX11;
+ case RenderApiType::D3D12: return gfx::RendererType::DirectX12;
+ case RenderApiType::OpenGl: return gfx::RendererType::OpenGl;
+ case RenderApiType::Vulkan: return gfx::RendererType::Vulkan;
+ default: return gfx::RendererType::Unknown;
+ }
+}
+
+static SlangResult _setRendererType(RendererType type, const char* arg, Slang::WriterHelper stdError)
+{
+ if (gOptions.rendererType != RendererType::Unknown)
+ {
+ stdError.print("Already has renderer option set. Found '%s'\n", arg);
+ return SLANG_FAIL;
+ }
+ gOptions.rendererType = type;
+ return SLANG_OK;
}
SlangResult parseOptions(int argc, const char*const* argv, Slang::WriterHelper stdError)
{
+ using namespace Slang;
+
// Reset the options
gOptions = gDefaultOptions;
@@ -68,36 +89,6 @@ SlangResult parseOptions(int argc, const char*const* argv, Slang::WriterHelper s
}
gOptions.outputPath = *argCursor++;
}
- else if( strcmp(arg, "-hlsl") == 0 )
- {
- setDefaultRendererType( RendererType::DirectX11);
- gOptions.inputLanguageID = InputLanguageID::Native;
- }
- else if( strcmp(arg, "-glsl") == 0 )
- {
- setDefaultRendererType( RendererType::OpenGl);
- gOptions.inputLanguageID = InputLanguageID::Native;
- }
- else if( strcmp(arg, "-hlsl-rewrite") == 0 )
- {
- setDefaultRendererType( RendererType::DirectX11);
- gOptions.inputLanguageID = InputLanguageID::Slang;
- }
- else if( strcmp(arg, "-glsl-rewrite") == 0 )
- {
- setDefaultRendererType(RendererType::OpenGl);
- gOptions.inputLanguageID = InputLanguageID::Slang;
- }
- else if( strcmp(arg, "-slang") == 0 )
- {
- setDefaultRendererType( RendererType::DirectX11);
- gOptions.inputLanguageID = InputLanguageID::Slang;
- }
- else if( strcmp(arg, "-glsl-cross") == 0 )
- {
- setDefaultRendererType(RendererType::OpenGl);
- gOptions.inputLanguageID = InputLanguageID::Slang;
- }
else if( strcmp(arg, "-xslang") == 0 )
{
// This is an option that we want to pass along to Slang
@@ -126,37 +117,44 @@ SlangResult parseOptions(int argc, const char*const* argv, Slang::WriterHelper s
{
gOptions.shaderType = ShaderProgramType::GraphicsCompute;
}
- else if (strcmp(arg, "-vk") == 0
- || strcmp(arg, "-vulkan") == 0)
- {
- gOptions.rendererType = RendererType::Vulkan;
- }
- else if (strcmp(arg, "-d3d12") == 0
- || strcmp(arg, "-dx12") == 0)
- {
- gOptions.rendererType = RendererType::DirectX12;
- }
- else if(strcmp(arg, "-gl") == 0)
- {
- gOptions.rendererType = RendererType::OpenGl;
- }
- else if (strcmp(arg, "-d3d11") == 0
- || strcmp(arg, "-dx11") == 0)
- {
- gOptions.rendererType = RendererType::DirectX11;
- }
else if( strcmp(arg, "-use-dxil") == 0 )
{
gOptions.useDXIL = true;
}
else
{
+ // Lookup
+ Slang::UnownedStringSlice argSlice(arg);
+ if (argSlice.size() && argSlice[0] == '-')
+ {
+ // Look up the rendering API if set
+ UnownedStringSlice argName = UnownedStringSlice(argSlice.begin() + 1, argSlice.end());
+ RendererType rendererType = _toRenderType(RenderApiUtil::findApiTypeByName(argName));
+
+ if (rendererType != RendererType::Unknown)
+ {
+ gOptions.rendererType = rendererType;
+ continue;
+ }
+
+ // Lookup the target language type
+ RendererType languageRenderType = _toRenderType(RenderApiUtil::findImplicitLanguageRenderApiType(argName));
+ if (languageRenderType != RendererType::Unknown)
+ {
+ gOptions.targetLanguageRendererType = languageRenderType;
+ gOptions.inputLanguageID = (argName == "hlsl" || argName == "glsl") ? InputLanguageID::Native : InputLanguageID::Slang;
+ continue;
+ }
+ }
+
stdError.print("unknown option '%s'\n", arg);
return SLANG_FAIL;
}
}
-
-
+
+ // If a render option isn't set use defaultRenderType
+ gOptions.rendererType = (gOptions.rendererType == RendererType::Unknown) ? gOptions.targetLanguageRendererType : gOptions.rendererType;
+
// first positional argument is source shader path
if(positionalArgs.Count())
{