diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h index 089f8ed38..687e53568 100644 --- a/indra/llcommon/indra_constants.h +++ b/indra/llcommon/indra_constants.h @@ -153,10 +153,10 @@ const char LAND_LAYER_CODE = 'L'; const char WATER_LAYER_CODE = 'W'; const char WIND_LAYER_CODE = '7'; const char CLOUD_LAYER_CODE = '8'; -// Extended land layer for Aurora Sim +// Extended land layer for Aurora Sim const char AURORA_LAND_LAYER_CODE = 'M'; -const char AURORA_WATER_LAYER_CODE = 'X'; -const char AURORA_WIND_LAYER_CODE = '9'; +const char AURORA_WATER_LAYER_CODE = 'X'; +const char AURORA_WIND_LAYER_CODE = '9'; const char AURORA_CLOUD_LAYER_CODE = ':'; // keys diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index 30dd4b44c..f4743dd84 100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -36,6 +36,8 @@ #include "llfile.h" #include "llrender.h" +#include "llcontrol.h" //for LLCachedControl +#include "lldir.h" //for gDirUtilp #if LL_DARWIN #include "OpenGL/OpenGL.h" @@ -606,7 +608,8 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade text[count++] = strdup(decl.c_str()); } - text[count++] = strdup("varying float vary_texture_index;\n"); + if(texture_index_channels != 1) + text[count++] = strdup("varying float vary_texture_index;\n"); text[count++] = strdup("vec4 diffuseLookup(vec2 texcoord)\n"); text[count++] = strdup("{\n"); @@ -701,6 +704,8 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade } } + std::string error_str; + if (error == GL_NO_ERROR) { //check for errors @@ -714,6 +719,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade //an error occured, print log LL_WARNS("ShaderLoading") << "GLSL Compilation Error: (" << error << ") in " << filename << LL_ENDL; dumpObjectLog(ret); + error_str = get_object_log(ret); std::stringstream ostr; //dump shader source for debugging @@ -732,6 +738,32 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade { ret = 0; } + static const LLCachedControl dump_raw_shaders("ShyotlDumpRawShaders",false); + if(dump_raw_shaders || ret) + { + std::stringstream ostr; + for (GLuint i = 0; i < count; i++) + { + ostr << text[i]; + } + + std::string delim = gDirUtilp->getDirDelimiter(); + std::string shader_name = filename.substr(filename.find_last_of("/")+1); //shader_name.glsl + shader_name = shader_name.substr(0,shader_name.find_last_of(".")); //shader_name + std::string maindir = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"shader_dump"+delim); + //mkdir is NOT recursive. Step through the folders one by one. + LLFile::mkdir(maindir); //..Roaming/SecondLife/logs/shader_dump/ + LLFile::mkdir(maindir+="class" + llformat("%i",gpu_class) + delim); //..shader_dump/class1/ + LLFile::mkdir(maindir+=filename.substr(0,filename.find_last_of("/")+1)); //..shader_dump/class1/windlight/ + + LLAPRFile file(maindir + shader_name + (ret ? "" : llformat("_FAILED(%i)",error)) + ".glsl", LL_APR_W); + file.write(ostr.str().c_str(),ostr.str().length()); + if(!error_str.empty()) + { + LLAPRFile file2(maindir + shader_name + "_ERROR" + ".txt", LL_APR_W); + file.write(error_str.c_str(),error_str.length()); + } + } stop_glerror(); //free memory diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 5234b8f3e..6d480c2b4 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -474,42 +474,7 @@ Boolean Value 0 - - ShyotlRenderVBOStrideMode - - Comment - 0 = Standard behavior -1 = Force strided VBOs -2 = Force unstrided(dense) VBOs - Persist - 1 - Type - U32 - Value - 0 - - ShyotlUseLegacyRenderPath - - Comment - Use deprecated pre-3.x OpenGL api calls. - Persist - 1 - Type - Boolean - Value - 0 - - ShyotlUseLegacyTextureBatching - - Comment - Disable usage of extra samplers in shaders. Decreases batch sizes, however also reduces branching in shaders drastcially. - Persist - 1 - Type - Boolean - Value - 0 - + ResetFocusOnSelfClick Comment diff --git a/indra/newview/app_settings/settings_sh.xml b/indra/newview/app_settings/settings_sh.xml index 1838edac6..4ae81ed52 100644 --- a/indra/newview/app_settings/settings_sh.xml +++ b/indra/newview/app_settings/settings_sh.xml @@ -168,5 +168,84 @@ Value 10.0 + ShyotlRenderVBOStrideMode + + Comment + 0 = Standard behavior +1 = Force strided VBOs +2 = Force unstrided(dense) VBOs + Persist + 1 + Type + U32 + Value + 0 + + ShyotlUseLegacyRenderPath + + Comment + Use deprecated pre-3.x OpenGL api calls. + Persist + 1 + Type + Boolean + Value + 0 + + ShyotlUseLegacyTextureBatching + + Comment + Disable usage of extra samplers in shaders. Decreases batch sizes, however also reduces branching in shaders drastically. + Persist + 1 + Type + Boolean + Value + 0 + + ShyotlUseLegacyDynamicTexture + + Comment + Disable shader path when rendering dynamic textures. + Persist + 1 + Type + Boolean + Value + 0 + + ShyotlUseLegacyTextureBaking + + Comment + Disable shader path when generating baked textures. + Persist + 1 + Type + Boolean + Value + 1 + + ShyotlDumpRawShaders + + Comment + Dump shader data being passed to glShaderSourceARB. + Persist + 1 + Type + Boolean + Value + 0 + + ShyotlDrawOrphanAttachments + + Comment + Render attachments lacking an 'alive' owner. + Persist + 1 + Type + Boolean + Value + 0 + diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index c31717779..31b74c081 100644 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -77,6 +77,8 @@ void LLToolComposite::setCurrentTool( LLTool* new_tool ) { if( mCur != new_tool ) { + if(new_tool) + lldebugs << "Current Tool: " << new_tool->getName() << llendl; if( mSelected ) { mCur->handleDeselect(); diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index 167d03a5a..b5e764dac 100644 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -738,6 +738,7 @@ void LLToolGrab::handleHoverActive(S32 x, S32 y, MASK mask) } // HACK to avoid assert: error checking system makes sure that the cursor is set during every handleHover. This is actually a no-op since the cursor is hidden. + gViewerWindow->hideCursor(); gViewerWindow->setCursor(UI_CURSOR_ARROW); lldebugst(LLERR_USER_INPUT) << "hover handled by LLToolGrab (active) [cursor hidden]" << llendl; diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp index eaf6c5a68..c407a6cb4 100644 --- a/indra/newview/lltoolmgr.cpp +++ b/indra/newview/lltoolmgr.cpp @@ -80,11 +80,11 @@ LLToolMgr::LLToolMgr() gToolNull = new LLTool(LLStringUtil::null); // Does nothing setCurrentTool(gToolNull); - gBasicToolset = new LLToolset(); - gCameraToolset = new LLToolset(); -// gLandToolset = new LLToolset(); - gMouselookToolset = new LLToolset(); - gFaceEditToolset = new LLToolset(); + gBasicToolset = new LLToolset("Basic"); + gCameraToolset = new LLToolset("Camera"); +// gLandToolset = new LLToolset("Land"); + gMouselookToolset = new LLToolset("MouseLook"); + gFaceEditToolset = new LLToolset("FaceEdit"); } void LLToolMgr::initTools() @@ -149,6 +149,7 @@ void LLToolMgr::setCurrentToolset(LLToolset* current) { mSelectedTool->handleDeselect(); } + lldebugs << "Current tool set: " << current->getName() << llendl; mCurrentToolset = current; // select first tool of new toolset only if toolset changed mCurrentToolset->selectFirstTool(); @@ -164,6 +165,8 @@ LLToolset* LLToolMgr::getCurrentToolset() void LLToolMgr::setCurrentTool( LLTool* tool ) { + if(tool && mBaseTool!=tool) + lldebugs << "Current Tool: " << tool->getName() << llendl; if (mTransientTool) { mTransientTool = NULL; diff --git a/indra/newview/lltoolmgr.h b/indra/newview/lltoolmgr.h index 92647c99d..2abba2220 100644 --- a/indra/newview/lltoolmgr.h +++ b/indra/newview/lltoolmgr.h @@ -93,7 +93,7 @@ protected: class LLToolset { public: - LLToolset() : mSelectedTool(NULL) {} + LLToolset(const char *name) : mSelectedTool(NULL), mName(name) {} LLTool* getSelectedTool() { return mSelectedTool; } @@ -109,7 +109,9 @@ public: BOOL isToolSelected( S32 index ); + const char* getName() const {return mName;} protected: + const char* mName; LLTool* mSelectedTool; typedef std::vector tool_list_t; tool_list_t mToolList; diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index be4da4fad..088cdb7a8 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -32,6 +32,7 @@ #include "llviewerprecompiledheaders.h" +#include //First, because glh_linear #defines equivalent.. which boost uses internally #include "llfeaturemanager.h" #include "llviewershadermgr.h" @@ -351,6 +352,11 @@ void LLViewerShaderMgr::setShaders() return; } + { + const std::string dumpdir = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"shader_dump")+gDirUtilp->getDirDelimiter(); + boost::filesystem::remove_all(dumpdir); + } + LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits, (S32) gSavedSettings.getU32("RenderMaxTextureIndex")), 1); static const LLCachedControl no_texture_indexing("ShyotlUseLegacyTextureBatching",false); static const LLCachedControl use_legacy_path("ShyotlUseLegacyRenderPath", false); //Legacy does not jive with new batching. diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 5de2a805e..36370137e 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -159,7 +159,7 @@ void LLViewerTextureList::doPreloadImages() image->setAddressMode(LLTexUnit::TAM_WRAP); mImagePreloads.insert(image); } - image = LLViewerTextureManager::getFetchedTextureFromFile("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903.j2c"/*"transparent.j2c"*/, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI, LLViewerTexture::FETCHED_TEXTURE, + image = LLViewerTextureManager::getFetchedTextureFromFile("transparent.j2c", MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI, LLViewerTexture::FETCHED_TEXTURE, 0,0,LLUUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903")); if (image) { diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 2426c75a5..954834d60 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -4481,7 +4481,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei gPipeline.resetDrawOrders(); } - if (high_res && (show_ui || !hide_hud)) + if (high_res) { send_agent_resume(); } diff --git a/indra/newview/skins/darkorange/textures/8dcd4a48-2d37-4909-9f78-f7a9eb4ef903.j2c b/indra/newview/skins/default/textures/transparent.j2c similarity index 100% rename from indra/newview/skins/darkorange/textures/8dcd4a48-2d37-4909-9f78-f7a9eb4ef903.j2c rename to indra/newview/skins/default/textures/transparent.j2c diff --git a/indra/newview/skins/kdarknv/textures/8dcd4a48-2d37-4909-9f78-f7a9eb4ef903.j2c b/indra/newview/skins/kdarknv/textures/8dcd4a48-2d37-4909-9f78-f7a9eb4ef903.j2c deleted file mode 100644 index 1068e940b..000000000 Binary files a/indra/newview/skins/kdarknv/textures/8dcd4a48-2d37-4909-9f78-f7a9eb4ef903.j2c and /dev/null differ diff --git a/indra/newview/skins/kliteat/textures/8dcd4a48-2d37-4909-9f78-f7a9eb4ef903.j2c b/indra/newview/skins/kliteat/textures/8dcd4a48-2d37-4909-9f78-f7a9eb4ef903.j2c deleted file mode 100644 index 1068e940b..000000000 Binary files a/indra/newview/skins/kliteat/textures/8dcd4a48-2d37-4909-9f78-f7a9eb4ef903.j2c and /dev/null differ