summaryrefslogtreecommitdiffstats
path: root/tools/render-test
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2019-03-18 18:19:26 -0400
committerGitHub <noreply@github.com>2019-03-18 18:19:26 -0400
commit71885de27c973a73b7d020f5ebbe86e16b86d7e4 (patch)
tree1d4ab43ac820fdb88611ce587f7613e13a58c6d2 /tools/render-test
parent70048715cec251a23871747e342e5cf938c97255 (diff)
First pass support for half on vk (#912)
* Look at getting half to work on vk. * Alter half test so can always produce consistent test results. * First pass working half on vk. * Improve comments for vulkan extensions around half. * Upgraded vulkan headers to v1.1.103 https://github.com/KhronosGroup/Vulkan-Headers * * Add getFeatures on Render interface * Vulkan renderer determines at startup if it can support half * Parse render-features on render-test * Small changes to half-calc.slang test. * Structured buffer half access works as expected for Vk, but isn't for dx12, so disable for now. * Require the half feature for renderers for the half-structured-buffer.slang test. * * Added ToolReturnCode to be more rigerous about how a return code is passed back from a tool * Added support for a tool being able to pass back an 'ignored' result. * Used enum codes to indicate meanings * Made spawnAndWait return a ToolReturnCode * Ignore tests that don't have required render-feature * Fix macro line continuation usage. * Check dx12 has half support. * Checking for half on dx12 - if CheckFeatureSupport fails, don't fail renderer initialization. * Fix typo.
Diffstat (limited to 'tools/render-test')
-rw-r--r--tools/render-test/options.cpp21
-rw-r--r--tools/render-test/options.h2
-rw-r--r--tools/render-test/render-test-main.cpp11
3 files changed, 34 insertions, 0 deletions
diff --git a/tools/render-test/options.cpp b/tools/render-test/options.cpp
index b6208c4b3..1171a2a03 100644
--- a/tools/render-test/options.cpp
+++ b/tools/render-test/options.cpp
@@ -9,7 +9,11 @@
#include "../../source/core/slang-writer.h"
#include "../../source/core/slang-render-api-util.h"
+#include "../../source/core/list.h"
+#include "../../source/core/slang-string-util.h"
+
namespace renderer_test {
+using namespace Slang;
static const Options gDefaultOptions;
@@ -98,6 +102,23 @@ SlangResult parseOptions(int argc, const char*const* argv, Slang::WriterHelper s
}
gOptions.profileName = *argCursor++;
}
+ else if (strcmp(arg, "-render-features") == 0 || strcmp(arg, "-render-feature") == 0)
+ {
+ if (argCursor == argEnd)
+ {
+ stdError.print("expected argument for '%s' option\n", arg);
+ return SLANG_FAIL;
+ }
+ const char* value = *argCursor++;
+
+ List<UnownedStringSlice> values;
+ StringUtil::split(UnownedStringSlice(value), ',', values);
+
+ for (const auto& value : values)
+ {
+ gOptions.renderFeatures.Add(value);
+ }
+ }
else if( strcmp(arg, "-xslang") == 0 )
{
// This is an option that we want to pass along to Slang
diff --git a/tools/render-test/options.h b/tools/render-test/options.h
index 6c1482ab4..7b55b9ac0 100644
--- a/tools/render-test/options.h
+++ b/tools/render-test/options.h
@@ -55,6 +55,8 @@ struct Options
int slangArgCount = 0;
bool useDXIL = false;
+
+ Slang::List<Slang::String> renderFeatures; /// Required render features for this test to run
};
extern Options gOptions;
diff --git a/tools/render-test/render-test-main.cpp b/tools/render-test/render-test-main.cpp
index 0be84f52f..ee408f283 100644
--- a/tools/render-test/render-test-main.cpp
+++ b/tools/render-test/render-test-main.cpp
@@ -574,6 +574,17 @@ SLANG_TEST_TOOL_API SlangResult innerMain(Slang::StdWriters* stdWriters, SlangSe
}
}
+ {
+ for (const auto& feature : gOptions.renderFeatures)
+ {
+ // If doesn't have required feature... we have to give up
+ if (!renderer->hasFeature(feature.getUnownedSlice()))
+ {
+ return SLANG_E_NOT_AVAILABLE;
+ }
+ }
+ }
+
// Use the profile name set on options if set
profileName = gOptions.profileName ? gOptions.profileName : profileName;