diff options
author | Dave Parks <davep@lindenlab.com> | 2022-10-31 15:19:28 -0500 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2022-10-31 15:19:28 -0500 |
commit | 29e344bbd0043bb1cd5f1defd6f9a193b0cc728e (patch) | |
tree | 90b87adc2d5e317de99bd0c137fac5af01799a03 | |
parent | 105f50478c84b0c14243da3d49479c65ec6ee040 (diff) |
SL-18483 Work around for crash on AMD when using glGenerateMipmap on cubemap array.
-rw-r--r-- | indra/llrender/llcubemaparray.cpp | 20 | ||||
-rw-r--r-- | indra/newview/featuretable.txt | 6 |
2 files changed, 17 insertions, 9 deletions
diff --git a/indra/llrender/llcubemaparray.cpp b/indra/llrender/llcubemaparray.cpp index a21f7d084e..52118172c0 100644 --- a/indra/llrender/llcubemaparray.cpp +++ b/indra/llrender/llcubemaparray.cpp @@ -123,16 +123,28 @@ void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count, BOOL us bind(0); U32 format = components == 4 ? GL_RGBA12 : GL_RGB10; - - glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, format, resolution, resolution, count*6, 0, - GL_RGB, GL_UNSIGNED_BYTE, nullptr); + + U32 mip = 0; + + while (resolution >= 1) + { + glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, mip, format, resolution, resolution, count * 6, 0, + GL_RGBA, GL_UNSIGNED_BYTE, nullptr); + + if (!use_mips) + { + break; + } + resolution /= 2; + ++mip; + } mImage->setAddressMode(LLTexUnit::TAM_CLAMP); if (use_mips) { mImage->setFilteringOption(LLTexUnit::TFO_ANISOTROPIC); - glGenerateMipmap(GL_TEXTURE_CUBE_MAP_ARRAY); + //glGenerateMipmap(GL_TEXTURE_CUBE_MAP_ARRAY); // <=== latest AMD drivers do not appreciate this method of allocating mipmaps } else { diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index efd498183d..aedba9b49a 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -1,4 +1,4 @@ -version 40 +version 41 // The version number above should be incremented IF AND ONLY IF some // change has been made that is sufficiently important to justify // resetting the graphics preferences of all users to the recommended @@ -286,10 +286,6 @@ RenderFSAASamples 1 0 RenderGLMultiThreaded 1 0 RenderGLContextCoreProfile 1 0 -// HACK: Current AMD drivers have bugged cubemap arrays, limit number of reflection probes to 32 -list AMD -RenderReflectionProbeCount 1 32 - list GL3 RenderFSAASamples 0 0 RenderReflectionProbeDetail 0 -1 |