diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index 90c228b1fa9c4e299a8bf436b6544e934a375400..065afb1a936d021b02129b18d2168960cb382430 100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -1094,11 +1094,11 @@ void LLShaderMgr::initShaderCache(bool enabled, const LLUUID& old_cache_version, mShaderCacheInitialized = true; - std::string shader_cache_dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "shader_cache"); - LLFile::mkdir(shader_cache_dir); + mShaderCacheDir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "shader_cache"); + LLFile::mkdir(mShaderCacheDir); { - std::string meta_out_path = gDirUtilp->add(shader_cache_dir, "shaderdata.llsd"); + std::string meta_out_path = gDirUtilp->add(mShaderCacheDir, "shaderdata.llsd"); if (gDirUtilp->fileExists(meta_out_path)) { LL_INFOS() << "Loading shader metadata" << LL_ENDL; @@ -1167,7 +1167,7 @@ bool LLShaderMgr::loadCachedProgramBinary(LLGLSLShader* shader) std::vector<U8> in_data; in_data.resize(shader_info.mBinaryLength); - std::string in_path = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "shader_cache", shader->mShaderHash.asString() + ".shaderbin"); + std::string in_path = gDirUtilp->add(mShaderCacheDir, shader->mShaderHash.asString() + ".shaderbin"); LLUniqueFile filep = LLFile::fopen(in_path, "rb"); if (filep) { @@ -1203,7 +1203,7 @@ bool LLShaderMgr::saveCachedProgramBinary(LLGLSLShader* shader) glGetProgramBinary(shader->mProgramObject, program_binary.size() * sizeof(U8), nullptr, &binary_info.mBinaryFormat, program_binary.data()); - std::string out_path = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "shader_cache", shader->mShaderHash.asString() + ".shaderbin"); + std::string out_path = gDirUtilp->add(mShaderCacheDir, shader->mShaderHash.asString() + ".shaderbin"); LLUniqueFile outfile = LLFile::fopen(out_path, "wb"); if (outfile) { diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h index 188057976a6459ced9a020b2df7adbfffa18d963..25b149c604bef63551508fa1b94ffd757428c05f 100644 --- a/indra/llrender/llshadermgr.h +++ b/indra/llrender/llshadermgr.h @@ -338,6 +338,7 @@ class LLShaderMgr boost::unordered_map<LLUUID, ProgramBinaryData> mShaderBinaryCache; bool mShaderCacheInitialized = false; bool mShaderCacheEnabled = false; + std::string mShaderCacheDir; protected: diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index dec4e4ad2def75f121b5de474c5bbef25f456ec5..6d2f46221a993e0e94af43a0db6f854881682cc5 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -3689,23 +3689,31 @@ function="World.EnvPreset" parameter="RenderAttachedParticles" /> </menu_item_check> <menu_item_separator /> - + <menu_item_check + label="Enable Shader Cache" + name="Enable Shader Cache"> + <menu_item_check.on_check + function="CheckControl" + parameter="RenderShaderCacheEnabled" /> + <menu_item_check.on_click + function="ToggleShaderControl" + parameter="RenderShaderCacheEnabled" /> + </menu_item_check> <menu_item_call enabled="true" - label="Clear Cache Immediately" - name="Cache Clear"> + label="Clear Shader Cache" + name="Shader Cache Clear"> <menu_item_call.on_click - function="Develop.ClearCache" /> + function="Advanced.ClearShaderCache" /> </menu_item_call> - + <menu_item_separator /> <menu_item_call enabled="true" - label="Clear Shader Cache" - name="Shader Cache Clear"> + label="Clear Cache Immediately" + name="Cache Clear"> <menu_item_call.on_click - function="Advanced.ClearShaderCache" /> + function="Develop.ClearCache" /> </menu_item_call> - </menu> <menu