diff options
author | Dave Parks <davep@lindenlab.com> | 2022-09-20 12:28:45 -0500 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2022-09-20 12:28:45 -0500 |
commit | 1eeee12ecb4753cc4b651e18474bb80de45fcede (patch) | |
tree | 3a61b841f1d5cb05958a41d526ba9e388bd45ab9 /indra/llrender | |
parent | 7a9811ee115b7bb678d1310e0c833dc9ac7139ab (diff) |
SL-18190 Don't allocate mips for irradiance maps because they're never generated. Disable OpenGL core profile on Intel by default.
Diffstat (limited to 'indra/llrender')
-rw-r--r-- | indra/llrender/llcubemaparray.cpp | 22 | ||||
-rw-r--r-- | indra/llrender/llcubemaparray.h | 3 |
2 files changed, 16 insertions, 9 deletions
diff --git a/indra/llrender/llcubemaparray.cpp b/indra/llrender/llcubemaparray.cpp index 08ff7c9414..bb4bd58121 100644 --- a/indra/llrender/llcubemaparray.cpp +++ b/indra/llrender/llcubemaparray.cpp @@ -107,18 +107,18 @@ LLCubeMapArray::~LLCubeMapArray() { } -void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count) +void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count, BOOL use_mips) { U32 texname = 0; LLImageGL::generateTextures(1, &texname); - mImage = new LLImageGL(resolution, resolution, components, TRUE); + mImage = new LLImageGL(resolution, resolution, components, use_mips); mImage->setTexName(texname); mImage->setTarget(sTargets[0], LLTexUnit::TT_CUBE_MAP_ARRAY); - mImage->setUseMipMaps(TRUE); - mImage->setHasMipMaps(TRUE); + mImage->setUseMipMaps(use_mips); + mImage->setHasMipMaps(use_mips); bind(0); @@ -127,9 +127,15 @@ void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count) mImage->setAddressMode(LLTexUnit::TAM_CLAMP); - mImage->setFilteringOption(LLTexUnit::TFO_ANISOTROPIC); - - glGenerateMipmap(GL_TEXTURE_CUBE_MAP_ARRAY); + if (use_mips) + { + mImage->setFilteringOption(LLTexUnit::TFO_ANISOTROPIC); + glGenerateMipmap(GL_TEXTURE_CUBE_MAP_ARRAY); + } + else + { + mImage->setFilteringOption(LLTexUnit::TFO_BILINEAR); + } unbind(); } @@ -137,7 +143,7 @@ void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count) void LLCubeMapArray::bind(S32 stage) { mTextureStage = stage; - gGL.getTexUnit(stage)->bindManual(LLTexUnit::TT_CUBE_MAP_ARRAY, getGLName(), TRUE); + gGL.getTexUnit(stage)->bindManual(LLTexUnit::TT_CUBE_MAP_ARRAY, getGLName(), mImage->getUseMipMaps()); } void LLCubeMapArray::unbind() diff --git a/indra/llrender/llcubemaparray.h b/indra/llrender/llcubemaparray.h index cbc0692afb..19c86278a1 100644 --- a/indra/llrender/llcubemaparray.h +++ b/indra/llrender/llcubemaparray.h @@ -51,7 +51,8 @@ public: // res - resolution of each cube face // components - number of components per pixel // count - number of cube maps in the array - void allocate(U32 res, U32 components, U32 count); + // use_mips - if TRUE, mipmaps will be allocated for this cube map array and anisotropic filtering will be used + void allocate(U32 res, U32 components, U32 count, BOOL use_mips = TRUE); void bind(S32 stage); void unbind(); |