diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2021-02-08 17:49:45 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-08 17:49:45 -0500 |
| commit | 10a55d8fa21591e3ac783e05f9b542e7b42f1c4c (patch) | |
| tree | 6c5535d4d00443bf39646cd4502a90932ad88b1e /tools/render-test/render-test-main.cpp | |
| parent | 891791edd182fdfcba60aaacd36eaa303296f2ff (diff) | |
DX12 & NVAPI fixes (#1695)
* #include an absolute path didn't work - because paths were taken to always be relative.
* Fix bugs with m_features on Dx12 and gl.
Fix issue about GFX_NVAPI availability.
* Fix handling of SLANG_E_NOT_AVAILABLE on renderer startup.
* Clarify comment.
* Improve comment.
Diffstat (limited to 'tools/render-test/render-test-main.cpp')
| -rw-r--r-- | tools/render-test/render-test-main.cpp | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp index b9fd5c725..77708461c 100644 --- a/tools/render-test/render-test-main.cpp +++ b/tools/render-test/render-test-main.cpp @@ -1284,11 +1284,14 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi desc.width = gWindowWidth; desc.height = gWindowHeight; desc.adapter = options.adapter.getBuffer(); + List<const char*> requiredFeatureList; - for (auto & name : options.renderFeatures) + for (auto& name : options.renderFeatures) requiredFeatureList.add(name.getBuffer()); + desc.requiredFeatures = requiredFeatureList.getBuffer(); desc.requiredFeatureCount = (int)requiredFeatureList.getCount(); + desc.nvapiExtnSlot = int(nvapiExtnSlot); desc.slang.slangGlobalSession = session; window = renderer_test::Window::create(); @@ -1298,15 +1301,31 @@ static SlangResult _innerMain(Slang::StdWriters* stdWriters, SlangSession* sessi SLANG_RETURN_ON_FAIL(window->initialize(gWindowWidth, gWindowHeight)); windowHandle = window->getHandle(); } - gfxCreateRenderer(&desc, windowHandle, renderer.writeRef()); - if (!renderer) { - if (!options.onlyStartup) + SlangResult res = gfxCreateRenderer(&desc, windowHandle, renderer.writeRef()); + if (SLANG_FAILED(res)) { - fprintf(stderr, "Unable to create renderer %s\n", rendererName.getBuffer()); + // We need to be careful here about SLANG_E_NOT_AVAILABLE. This return value means that the renderer couldn't + // be created because it required *features* that were *not available*. It does not mean the renderer in general couldn't + // be constructed. + // + // Returning SLANG_E_NOT_AVAILABLE will lead to the test infrastructure ignoring this test. + // + // We also don't want to output the 'Unable to create renderer' error, as this isn't an error. + if (res == SLANG_E_NOT_AVAILABLE) + { + return res; + } + + if (!options.onlyStartup) + { + fprintf(stderr, "Unable to create renderer %s\n", rendererName.getBuffer()); + } + + return res; } - return SLANG_FAIL; + SLANG_ASSERT(renderer); } for (const auto& feature : requiredFeatureList) |
