mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Allow sourcing data from disk in demos program
This commit is contained in:
@@ -40,3 +40,8 @@ std::string GetCWD()
|
||||
|
||||
return cwdstr;
|
||||
}
|
||||
|
||||
std::string GetEnvVar(const char *var)
|
||||
{
|
||||
return getenv(var);
|
||||
}
|
||||
@@ -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++;
|
||||
|
||||
@@ -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]))
|
||||
|
||||
@@ -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 "";
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user