Added test setting 'ShyotlUseLegacyTextureBatching' to disable new texture indexing. The new indexing method requires heavy branching in shaders, which some hardware may not perfom well with.
This commit is contained in:
@@ -37,6 +37,7 @@
|
|||||||
#include "llshadermgr.h"
|
#include "llshadermgr.h"
|
||||||
#include "llfile.h"
|
#include "llfile.h"
|
||||||
#include "llrender.h"
|
#include "llrender.h"
|
||||||
|
#include "llcontrol.h"
|
||||||
|
|
||||||
#if LL_DARWIN
|
#if LL_DARWIN
|
||||||
#include "OpenGL/OpenGL.h"
|
#include "OpenGL/OpenGL.h"
|
||||||
@@ -131,7 +132,8 @@ BOOL LLGLSLShader::createShader(vector<string> * attributes,
|
|||||||
// Create program
|
// Create program
|
||||||
mProgramObject = glCreateProgramObjectARB();
|
mProgramObject = glCreateProgramObjectARB();
|
||||||
|
|
||||||
if (gGLManager.mGLVersion < 3.1f)
|
static const LLCachedControl<bool> no_texture_indexing("ShyotlUseLegacyTextureBatching",false);
|
||||||
|
if (gGLManager.mGLVersion < 3.1f || no_texture_indexing)
|
||||||
{ //force indexed texture channels to 1 if GL version is old (performance improvement for drivers with poor branching shader model support)
|
{ //force indexed texture channels to 1 if GL version is old (performance improvement for drivers with poor branching shader model support)
|
||||||
mFeatures.mIndexedTextureChannels = llmin(mFeatures.mIndexedTextureChannels, 1);
|
mFeatures.mIndexedTextureChannels = llmin(mFeatures.mIndexedTextureChannels, 1);
|
||||||
}
|
}
|
||||||
@@ -161,7 +163,7 @@ BOOL LLGLSLShader::createShader(vector<string> * attributes,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gGLManager.mGLVersion < 3.1f)
|
if (gGLManager.mGLVersion < 3.1f || no_texture_indexing)
|
||||||
{ //attachShaderFeatures may have set the number of indexed texture channels, so set to 1 again
|
{ //attachShaderFeatures may have set the number of indexed texture channels, so set to 1 again
|
||||||
mFeatures.mIndexedTextureChannels = llmin(mFeatures.mIndexedTextureChannels, 1);
|
mFeatures.mIndexedTextureChannels = llmin(mFeatures.mIndexedTextureChannels, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -488,7 +488,28 @@
|
|||||||
<key>Value</key>
|
<key>Value</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
</map>
|
</map>
|
||||||
|
<key>ShyotlUseLegacyRenderPath</key>
|
||||||
|
<map>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string>Use deprecated pre-3.x OpenGL api calls.</string>
|
||||||
|
<key>Persist</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>Boolean</string>
|
||||||
|
<key>Value</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</map>
|
||||||
|
<key>ShyotlUseLegacyTextureBatching</key>
|
||||||
|
<map>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string>Disable usage of extra samplers in shaders. Decreases batch sizes, however also reduces branching in shaders drastcially.</string>
|
||||||
|
<key>Persist</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>Boolean</string>
|
||||||
|
<key>Value</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</map>
|
||||||
<key>ResetFocusOnSelfClick</key>
|
<key>ResetFocusOnSelfClick</key>
|
||||||
<map>
|
<map>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
@@ -500,7 +521,6 @@
|
|||||||
<key>Value</key>
|
<key>Value</key>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
</map>
|
</map>
|
||||||
|
|
||||||
<key>MoyFastMiniMap</key>
|
<key>MoyFastMiniMap</key>
|
||||||
<map>
|
<map>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
|
|||||||
@@ -648,6 +648,8 @@ void settings_setup_listeners()
|
|||||||
//See LL jira VWR-3258 comment section. Implemented by LL in 2.1 -Shyotl
|
//See LL jira VWR-3258 comment section. Implemented by LL in 2.1 -Shyotl
|
||||||
gSavedSettings.getControl("ShyotlRenderUseStreamVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
|
gSavedSettings.getControl("ShyotlRenderUseStreamVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
|
||||||
gSavedSettings.getControl("ShyotlRenderVBOStrideMode")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
|
gSavedSettings.getControl("ShyotlRenderVBOStrideMode")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
|
||||||
|
gSavedSettings.getControl("ShyotlUseLegacyRenderPath")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
|
||||||
|
gSavedSettings.getControl("ShyotlUseLegacyTextureBatching")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
|
||||||
gSavedSettings.getControl("SianaRenderOmitBlankVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
|
gSavedSettings.getControl("SianaRenderOmitBlankVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
|
||||||
gSavedSettings.getControl("RenderUseFBO")->getSignal()->connect(boost::bind(&handleRenderUseFBOChanged, _2));
|
gSavedSettings.getControl("RenderUseFBO")->getSignal()->connect(boost::bind(&handleRenderUseFBOChanged, _2));
|
||||||
gSavedSettings.getControl("RenderDeferredNoise")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
|
gSavedSettings.getControl("RenderDeferredNoise")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
|
||||||
|
|||||||
@@ -654,7 +654,8 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
|
|||||||
shaders.reserve(13);
|
shaders.reserve(13);
|
||||||
S32 ch = gGLManager.mNumTextureImageUnits-1;
|
S32 ch = gGLManager.mNumTextureImageUnits-1;
|
||||||
|
|
||||||
if (gGLManager.mGLVersion < 3.1f)
|
static const LLCachedControl<bool> no_texture_indexing("ShyotlUseLegacyTextureBatching",false);
|
||||||
|
if (gGLManager.mGLVersion < 3.1f || no_texture_indexing)
|
||||||
{ //force to 1 texture index channel for old drivers
|
{ //force to 1 texture index channel for old drivers
|
||||||
ch = 1;
|
ch = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3657,7 +3657,8 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
|
|||||||
|
|
||||||
S32 texture_index_channels = gGLManager.mNumTextureImageUnits-1; //always reserve one for shiny for now just for simplicity
|
S32 texture_index_channels = gGLManager.mNumTextureImageUnits-1; //always reserve one for shiny for now just for simplicity
|
||||||
|
|
||||||
if (gGLManager.mGLVersion < 3.1f)
|
static const LLCachedControl<bool> no_texture_indexing("ShyotlUseLegacyTextureBatching",false);
|
||||||
|
if (gGLManager.mGLVersion < 3.1f || no_texture_indexing)
|
||||||
{
|
{
|
||||||
texture_index_channels = 1;
|
texture_index_channels = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user