summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2017-04-23 16:48:52 +1000
committer Vas Crabb <vas@vastheman.com>2017-04-23 16:48:52 +1000
commit2e14f39a072ae5a7088baaddbcbd9de89c6a58ef (patch)
treecaf5e528630db68105c13821e562e01bb52325d7
parentb2fda77d3029968cfb0a2dec024b7e1632d4d047 (diff)
do variable substitution in bgfx_path #2201
-rw-r--r--src/osd/modules/render/bgfx/chainmanager.cpp10
-rw-r--r--src/osd/modules/render/bgfx/effectmanager.cpp4
-rw-r--r--src/osd/modules/render/bgfx/shadermanager.cpp19
3 files changed, 21 insertions, 12 deletions
diff --git a/src/osd/modules/render/bgfx/chainmanager.cpp b/src/osd/modules/render/bgfx/chainmanager.cpp
index 40776bb20ce..653caf0626e 100644
--- a/src/osd/modules/render/bgfx/chainmanager.cpp
+++ b/src/osd/modules/render/bgfx/chainmanager.cpp
@@ -61,7 +61,9 @@ void chain_manager::refresh_available_chains()
m_available_chains.clear();
m_available_chains.push_back(chain_desc("none", ""));
- find_available_chains(std::string(m_options.bgfx_path()) + "/chains", "");
+ std::string chains_path;
+ osd_subst_env(chains_path, util::string_format("%s" PATH_SEPARATOR "chains", m_options.bgfx_path()));
+ find_available_chains(chains_path, "");
destroy_unloaded_chains();
}
@@ -133,11 +135,13 @@ void chain_manager::find_available_chains(std::string root, std::string path)
bgfx_chain* chain_manager::load_chain(std::string name, uint32_t screen_index)
{
- if (name.length() < 5 || (name.compare(name.length() - 5, 5, ".json")!= 0))
+ if (name.length() < 5 || (name.compare(name.length() - 5, 5, ".json") != 0))
{
name = name + ".json";
}
- std::string path = std::string(m_options.bgfx_path()) + "/chains/" + name;
+ std::string path;
+ osd_subst_env(path, util::string_format("%s" PATH_SEPARATOR "chains" PATH_SEPARATOR, m_options.bgfx_path()));
+ path += name;
bx::CrtFileReader reader;
if (!bx::open(&reader, path.c_str()))
diff --git a/src/osd/modules/render/bgfx/effectmanager.cpp b/src/osd/modules/render/bgfx/effectmanager.cpp
index 3affa36f2ec..8627650aae2 100644
--- a/src/osd/modules/render/bgfx/effectmanager.cpp
+++ b/src/osd/modules/render/bgfx/effectmanager.cpp
@@ -51,7 +51,9 @@ bgfx_effect* effect_manager::load_effect(std::string name)
if (full_name.length() < 5 || (full_name.compare(full_name.length() - 5, 5, ".json") != 0)) {
full_name = full_name + ".json";
}
- std::string path = std::string(m_options.bgfx_path()) + "/effects/" + full_name;
+ std::string path;
+ osd_subst_env(path, util::string_format("%s" PATH_SEPARATOR "effects" PATH_SEPARATOR, m_options.bgfx_path()));
+ path += full_name;
bx::CrtFileReader reader;
if (!bx::open(&reader, path.c_str()))
diff --git a/src/osd/modules/render/bgfx/shadermanager.cpp b/src/osd/modules/render/bgfx/shadermanager.cpp
index e4a665d967c..c4a92e1ff32 100644
--- a/src/osd/modules/render/bgfx/shadermanager.cpp
+++ b/src/osd/modules/render/bgfx/shadermanager.cpp
@@ -41,42 +41,45 @@ bgfx::ShaderHandle shader_manager::shader(std::string name)
bgfx::ShaderHandle shader_manager::load_shader(std::string name)
{
- std::string shader_path;
+ std::string shader_path(m_options.bgfx_path());
+ shader_path += PATH_SEPARATOR "shaders" PATH_SEPARATOR;
switch (bgfx::getRendererType())
{
case bgfx::RendererType::Noop:
case bgfx::RendererType::Direct3D9:
- shader_path = m_options.bgfx_path() + std::string("/shaders/dx9/");
+ shader_path += "dx9";
break;
case bgfx::RendererType::Direct3D11:
case bgfx::RendererType::Direct3D12:
- shader_path = m_options.bgfx_path() + std::string("/shaders/dx11/");
+ shader_path += "dx11";
break;
case bgfx::RendererType::Gnm:
- shader_path = m_options.bgfx_path() + std::string("/shaders/pssl/");
+ shader_path += "pssl";
break;
case bgfx::RendererType::Metal:
- shader_path = m_options.bgfx_path() + std::string("/shaders/metal/");
+ shader_path += "metal";
break;
case bgfx::RendererType::OpenGL:
- shader_path = m_options.bgfx_path() + std::string("/shaders/glsl/");
+ shader_path += "glsl";
break;
case bgfx::RendererType::OpenGLES:
- shader_path = m_options.bgfx_path() + std::string("/shaders/essl/");
+ shader_path += "essl";
break;
case bgfx::RendererType::Vulkan:
- shader_path = m_options.bgfx_path() + std::string("/shaders/spirv/");
+ shader_path += "spirv";
break;
default:
fatalerror("Unknown BGFX renderer type %d", bgfx::getRendererType());
}
+ shader_path += PATH_SEPARATOR;
+ osd_subst_env(shader_path, shader_path);
const bgfx::Memory* mem = load_mem(shader_path + name + ".bin");
if (mem != nullptr)