From 543e1739885c69784fcdd96f837978ea7a96e8b9 Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Tue, 9 May 2023 12:01:57 -0400 Subject: [PATCH] Add shader cache checkbox to develop graphics menu --- indra/llrender/llshadermgr.cpp | 10 +++---- indra/llrender/llshadermgr.h | 1 + .../skins/default/xui/en/menu_viewer.xml | 26 ++++++++++++------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index 90c228b1fa9..065afb1a936 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 188057976a6..25b149c604b 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 dec4e4ad2de..6d2f46221a9 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 -- GitLab