From 2e14f39a072ae5a7088baaddbcbd9de89c6a58ef Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sun, 23 Apr 2017 16:48:52 +1000 Subject: do variable substitution in bgfx_path #2201 --- src/osd/modules/render/bgfx/chainmanager.cpp | 10 +++++++--- src/osd/modules/render/bgfx/effectmanager.cpp | 4 +++- src/osd/modules/render/bgfx/shadermanager.cpp | 19 +++++++++++-------- 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) -- cgit v1.2.3