From 0959d7ebeb6932b1949a4be10e5c472327006352 Mon Sep 17 00:00:00 2001 From: cheneym2 Date: Wed, 19 Feb 2025 09:08:57 -0500 Subject: Show adapter info in slang-test (#6388) When -show-adapter-info is provided to slang-test, there is a subsequent pass over all available APIs to ask render-api to show which adapter will be used. > .\slang-test.exe -show-adapter-info Supported backends: fxc dxc glslang spirv-dis clang visualstudio genericcpp nvrtc llvm spirv-opt tint Check vk,vulkan: Supported Check dx12,d3d12: Supported Check dx11,d3d11: Supported Check cuda: Supported Check wgpu,webgpu: Supported Adapter Information for Available APIs: vk,vulkan: Using graphics adapter: NVIDIA RTX A3000 Laptop GPU dx12,d3d12: Using graphics adapter: NVIDIA RTX A3000 Laptop GPU dx11,d3d11: Using graphics adapter: Intel(R) UHD Graphics cpu: cuda: wgpu,webgpu: Using graphics adapter: default passed test: 'tests/autodiff/arithmetic-jvp.slang (dx11)' ... closes #5600 * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> --- tools/slang-test/slang-test-main.cpp | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'tools/slang-test/slang-test-main.cpp') 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; } -- cgit v1.2.3