summaryrefslogtreecommitdiff
path: root/tools/slang-test
diff options
context:
space:
mode:
Diffstat (limited to 'tools/slang-test')
-rw-r--r--tools/slang-test/options.cpp4
-rw-r--r--tools/slang-test/options.h3
-rw-r--r--tools/slang-test/slang-test-main.cpp41
3 files changed, 48 insertions, 0 deletions
diff --git a/tools/slang-test/options.cpp b/tools/slang-test/options.cpp
index 9dd831afa..b3f4bdc10 100644
--- a/tools/slang-test/options.cpp
+++ b/tools/slang-test/options.cpp
@@ -336,6 +336,10 @@ static bool _isSubCommand(const char* arg)
}
optionsOut->testDir = *argCursor++;
}
+ else if (strcmp(arg, "-show-adapter-info") == 0)
+ {
+ optionsOut->showAdapterInfo = true;
+ }
else
{
stdError.print("unknown option '%s'\n", arg);
diff --git a/tools/slang-test/options.h b/tools/slang-test/options.h
index 912e28465..a127d1050 100644
--- a/tools/slang-test/options.h
+++ b/tools/slang-test/options.h
@@ -115,6 +115,9 @@ struct Options
// The adapter to use. If empty will match first found adapter.
Slang::String adapter;
+ // If true, print detailed adapter information
+ bool showAdapterInfo = false;
+
// Maximum number of test servers to run.
int serverCount = 1;
diff --git a/tools/slang-test/slang-test-main.cpp b/tools/slang-test/slang-test-main.cpp
index 5db82fcb7..10bc99017 100644
--- a/tools/slang-test/slang-test-main.cpp
+++ b/tools/slang-test/slang-test-main.cpp
@@ -1391,6 +1391,47 @@ static RenderApiFlags _getAvailableRenderApiFlags(TestContext* context)
}
}
+ // After determining available APIs, print adapter info for each one
+ if (context->options.showAdapterInfo && availableRenderApiFlags)
+ {
+ StdWriters::getOut().print("\nAdapter Information for Available APIs:\n");
+ for (int i = 0; i < int(RenderApiType::CountOf); ++i)
+ {
+ const RenderApiType apiType = RenderApiType(i);
+ const RenderApiFlags apiFlag = RenderApiFlags(1) << int(apiType);
+
+ if (availableRenderApiFlags & apiFlag)
+ {
+ // Create command line to query adapter info
+ CommandLine cmdLine;
+ cmdLine.setExecutableLocation(
+ ExecutableLocation(context->options.binDir, "render-test"));
+
+ // Add the API type
+ StringBuilder builder;
+ builder << "-" << RenderApiUtil::getApiName(apiType);
+ cmdLine.addArg(builder);
+
+ // Add flags to show adapter info and only startup
+ cmdLine.addArg("-show-adapter-info");
+ cmdLine.addArg("-only-startup");
+
+ // Run render-test to get adapter info
+ ExecuteResult exeRes;
+ if (SLANG_SUCCEEDED(
+ spawnAndWaitSharedLibrary(context, "adapter-info", cmdLine, exeRes)))
+ {
+ // Output the adapter info
+ StdWriters::getOut().print(
+ "\n%s:\n%s",
+ RenderApiUtil::getApiName(apiType).begin(),
+ exeRes.standardOutput.getBuffer());
+ }
+ }
+ }
+ StdWriters::getOut().print("\n");
+ }
+
context->availableRenderApiFlags = availableRenderApiFlags;
context->isAvailableRenderApiFlagsValid = true;
}