Allow sourcing data from disk in demos program

This commit is contained in:
baldurk
2018-12-12 13:45:33 +00:00
parent 360ab71a56
commit d777f6bf9d
5 changed files with 43 additions and 2 deletions
+5
View File
@@ -40,3 +40,8 @@ std::string GetCWD()
return cwdstr;
}
std::string GetEnvVar(const char *var)
{
return getenv(var);
}
+19 -2
View File
@@ -350,11 +350,15 @@ bool GraphicsTest::Init(int argc, char **argv)
{
srand(0U);
dataRoot = GetEnvVar("RENDERDOC_DEMOS_DATA");
if(dataRoot.empty())
dataRoot = GetCWD() + "/data/demos/";
// parse parameters
for(int i = 0; i < argc; i++)
{
if(!strcmp(argv[i], "--debug") || !strcmp(argv[i], "-debug") ||
!strcmp(argv[i], "--validate") || !strcmp(argv[i], "-validate"))
if(!strcmp(argv[i], "--debug") || !strcmp(argv[i], "--validate"))
{
debugDevice = true;
}
@@ -364,6 +368,14 @@ bool GraphicsTest::Init(int argc, char **argv)
{
maxFrameCount = atoi(argv[i + 1]);
}
if(i + 1 < argc && !strcmp(argv[i], "--data"))
{
dataRoot = argv[i + 1];
while(dataRoot.back() == '/' || dataRoot.back() == '\\')
dataRoot.pop_back();
dataRoot += "/";
}
}
#if defined(WIN32)
@@ -386,6 +398,11 @@ bool GraphicsTest::Init(int argc, char **argv)
return true;
}
std::string GraphicsTest::GetDataPath(const std::string &filename)
{
return dataRoot + filename;
}
bool GraphicsTest::FrameLimit()
{
curFrame++;
+5
View File
@@ -151,8 +151,12 @@ struct GraphicsTest
virtual bool IsSupported() { return false; }
virtual bool Init(int argc, char **argv);
std::string GetDataPath(const std::string &filename);
bool FrameLimit();
std::string dataRoot;
int curFrame = 0;
int maxFrameCount = -1;
@@ -239,6 +243,7 @@ void RegisterTest(TestMetadata test);
static TestRegistration Anon##__LINE__;
std::string GetCWD();
std::string GetEnvVar(const char *var);
#ifndef ARRAY_COUNT
#define ARRAY_COUNT(arr) (sizeof(arr) / sizeof(arr[0]))
+12
View File
@@ -88,3 +88,15 @@ std::wstring UTF82Wide(const std::string &s)
return ret;
}
std::string GetEnvVar(const char *var)
{
std::wstring wvar = UTF82Wide(var);
wchar_t wval[1024] = {};
DWORD len = GetEnvironmentVariableW(wvar.c_str(), wval, 1023);
if(len > 0 && len <= 1023)
return Wide2UTF8(wval);
return "";
}
+2
View File
@@ -224,6 +224,8 @@ def run_tests(test_include: str, test_exclude: str, in_process: bool, slow_tests
log.print("Couldn't register vulkan layer properly, might need admin rights")
sys.exit(1)
os.environ['RENDERDOC_DEMOS_DATA'] = util.get_data_path('demos')
testcases = get_tests()
include_regexp = re.compile(test_include, re.IGNORECASE)