MAINT-2616 : Updated my Intel driver and now have orange in buttons and
Inventory pull down bar causing blinks to screen. Pulled in FS code, Reviewed by Kellymaster
parent
2b41a539aa
commit
abdbf45aaa
|
|
@ -57,6 +57,7 @@ bool LLGLSLShader::sNoFixedFunction = false;
|
|||
//UI shader -- declared here so llui_libtest will link properly
|
||||
LLGLSLShader gUIProgram;
|
||||
LLGLSLShader gSolidColorProgram;
|
||||
LLGLSLShader gSolidColorProgramIntel;
|
||||
|
||||
BOOL shouldChange(const LLVector4& v1, const LLVector4& v2)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -160,5 +160,8 @@ extern LLGLSLShader gSolidColorProgram;
|
|||
//Alpha mask shader (declared here so llappearance can access properly)
|
||||
extern LLGLSLShader gAlphaMaskProgram;
|
||||
|
||||
// Solid color Shader for Intel Graphics
|
||||
extern LLGLSLShader gSolidColorProgramIntel;
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -443,7 +443,16 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
|
|||
{
|
||||
if (LLGLSLShader::sNoFixedFunction)
|
||||
{
|
||||
gSolidColorProgram.bind();
|
||||
// When running with a intel gfx card, do not use the solidcolor?.glsl files. Instead use a custom one
|
||||
// for those cards. Passing color as a uniform and not a shader attribute
|
||||
if(gGLManager.mIsIntel)
|
||||
{
|
||||
gSolidColorProgramIntel.bind();
|
||||
}
|
||||
else
|
||||
{
|
||||
gSolidColorProgram.bind();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -454,7 +463,16 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
|
|||
|
||||
gGL.getTexUnit(0)->bind(image, true);
|
||||
|
||||
gGL.color4fv(color.mV);
|
||||
// When running with a intel gfx card, do not use the solidcolor?.glsl files. Instead use a custom one
|
||||
// for those cards. Passing color as a uniform and not a shader attribute
|
||||
if( solid_color && LLGLSLShader::sNoFixedFunction && gGLManager.mIsIntel )
|
||||
{
|
||||
gGL.diffuseColor4fv(color.mV);
|
||||
}
|
||||
else
|
||||
{
|
||||
gGL.color4fv(color.mV);
|
||||
}
|
||||
|
||||
const S32 NUM_VERTICES = 9 * 4; // 9 quads
|
||||
LLVector2 uv[NUM_VERTICES];
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
/**
|
||||
* @file solidcolorV.glsl
|
||||
*
|
||||
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2007, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
uniform mat4 modelview_projection_matrix;
|
||||
|
||||
uniform vec4 color;
|
||||
|
||||
ATTRIBUTE vec3 position;
|
||||
ATTRIBUTE vec4 diffuse_color;
|
||||
ATTRIBUTE vec2 texcoord0;
|
||||
|
||||
VARYING vec4 vertex_color;
|
||||
VARYING vec2 vary_texcoord0;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
|
||||
// vertex_color = diffuse_color;
|
||||
vertex_color = color;
|
||||
vary_texcoord0 = texcoord0;
|
||||
}
|
||||
|
||||
|
|
@ -6051,7 +6051,15 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
|
|||
|
||||
if (shader)
|
||||
{ //switch to "solid color" program for SH-2690 -- works around driver bug causing bad triangles when rendering silhouettes
|
||||
gSolidColorProgram.bind();
|
||||
if(gGLManager.mIsIntel)
|
||||
{
|
||||
gSolidColorProgramIntel.bind();
|
||||
gGL.diffuseColor4fv(color.mV);
|
||||
}
|
||||
else
|
||||
{
|
||||
gSolidColorProgram.bind();
|
||||
}
|
||||
}
|
||||
|
||||
gGL.matrixMode(LLRender::MM_MODELVIEW);
|
||||
|
|
|
|||
|
|
@ -640,6 +640,7 @@ void LLViewerShaderMgr::unloadShaders()
|
|||
gTwoTextureAddProgram.unload();
|
||||
gOneTextureNoColorProgram.unload();
|
||||
gSolidColorProgram.unload();
|
||||
gSolidColorProgramIntel.unload();
|
||||
|
||||
gObjectFullbrightNoColorProgram.unload();
|
||||
gObjectFullbrightNoColorWaterProgram.unload();
|
||||
|
|
@ -2703,6 +2704,24 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
|
|||
}
|
||||
}
|
||||
|
||||
// When running with a intel gfx card, do not use the solidcolor?.glsl files. Instead use a custom one
|
||||
// for those cards. Passing color as a uniform and not a shader attribute
|
||||
if (success)
|
||||
{
|
||||
gSolidColorProgramIntel.mName = "Solid Color Shader for Intel";
|
||||
gSolidColorProgramIntel.mShaderFiles.clear();
|
||||
gSolidColorProgramIntel.mShaderFiles.push_back(make_pair("interface/solidcolorIntelV.glsl", GL_VERTEX_SHADER_ARB));
|
||||
gSolidColorProgramIntel.mShaderFiles.push_back(make_pair("interface/solidcolorF.glsl", GL_FRAGMENT_SHADER_ARB)); // The standard fragment shader is just fine. So keep it.
|
||||
gSolidColorProgramIntel.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
|
||||
success = gSolidColorProgramIntel.createShader(NULL, NULL);
|
||||
if (success)
|
||||
{
|
||||
gSolidColorProgramIntel.bind();
|
||||
gSolidColorProgramIntel.uniform1i(sTex0, 0);
|
||||
gSolidColorProgramIntel.unbind();
|
||||
}
|
||||
}
|
||||
|
||||
if (success)
|
||||
{
|
||||
gOcclusionProgram.mName = "Occlusion Shader";
|
||||
|
|
|
|||
Loading…
Reference in New Issue