OpenGL Error in lldrawpoolwater.cpp
tracked
observeur Resident
As an effort to chase down opengl errors while working on megapahit, i found this one among others that i could fix, but this one, i am not sure what to do with it : so this is in lldrawpoolwater.cpp, lines 209 and 210.
shader->bindTexture(LLViewerShaderMgr::BUMP_MAP, tex_a);
this line is binding the texture it calls a bindfast()), then the next line will set its filtering options:
tex_a->setFilteringOption(filter_mode);
Problem is, when transparent water is turned OFF, this call will generate an invalid_enum error in llrender.cpp : void LLTexUnit::setTextureFilteringOption(....)
The reason why is, when it's called and the transparent water options is OFF, the mCurrTexType is equal to TT_NONE, which indicates the texture unit isn't active.
subsequent calls to glTexParameteri(...) generate an invalid_enum error, since the target is invalid (sGLTextureType[mCurrTexType]).
So it appears, for some reason shader->bindTexture(LLViewerShaderMgr::BUMP_MAP, tex_a); doesn't succeed at enabling the texture.
I saw this on Mac, i can't say if it happens on other platforms.
Also i didn't "explicitly" see this error in SLv, but it's most certainly present as the relative code in megapahit is identical and based on 7.1.15.
This has been around for several updates ( at least 7.1.13 ), i couldn't say if older.
In some cases it leads to performance drop when water transparency is OFF, but .. not always ... might depend on a combination of settings.
I thought i would share this as the engineers who worked on this would certainly know better than me.
Log In
Atlas Linden
tracked
Atlas Linden
Thanks for the report, observeur!
I'm going to import this issue into GitHub so that the devs can investigate this further.
observeur Resident
Atlas Linden Thank you Atlas, sounds good ;)