summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2021-02-08 17:49:45 -0500
committerGitHub <noreply@github.com>2021-02-08 17:49:45 -0500
commit10a55d8fa21591e3ac783e05f9b542e7b42f1c4c (patch)
tree6c5535d4d00443bf39646cd4502a90932ad88b1e /tools
parent891791edd182fdfcba60aaacd36eaa303296f2ff (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')
-rw-r--r--tools/gfx/d3d12/render-d3d12.cpp3
-rw-r--r--tools/gfx/open-gl/render-gl.cpp2
-rw-r--r--tools/render-test/render-test-main.cpp31
3 files changed, 26 insertions, 10 deletions
diff --git a/tools/gfx/d3d12/render-d3d12.cpp b/tools/gfx/d3d12/render-d3d12.cpp
index 0ab07c262..2e1959bde 100644
--- a/tools/gfx/d3d12/render-d3d12.cpp
+++ b/tools/gfx/d3d12/render-d3d12.cpp
@@ -762,8 +762,6 @@ protected:
HWND m_hwnd = nullptr;
- List<String> m_features;
-
bool m_nvapi = false;
};
@@ -1471,6 +1469,7 @@ Result D3D12Renderer::initialize(const Desc& desc, void* inWindowHandle)
m_nvapi = true;
#endif
+
}
// Find what features are supported
diff --git a/tools/gfx/open-gl/render-gl.cpp b/tools/gfx/open-gl/render-gl.cpp
index 03736cfa4..4251abe98 100644
--- a/tools/gfx/open-gl/render-gl.cpp
+++ b/tools/gfx/open-gl/render-gl.cpp
@@ -470,8 +470,6 @@ public:
Desc m_desc;
- List<String> m_features;
-
// Declare a function pointer for each OpenGL
// extension function we need to load
#define DECLARE_GL_EXTENSION_FUNC(NAME, TYPE) TYPE NAME;
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)