summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2022-10-31 15:19:28 -0500
committerDave Parks <davep@lindenlab.com>2022-10-31 15:19:28 -0500
commit29e344bbd0043bb1cd5f1defd6f9a193b0cc728e (patch)
tree90b87adc2d5e317de99bd0c137fac5af01799a03
parent105f50478c84b0c14243da3d49479c65ec6ee040 (diff)
SL-18483 Work around for crash on AMD when using glGenerateMipmap on cubemap array.
-rw-r--r--indra/llrender/llcubemaparray.cpp20
-rw-r--r--indra/newview/featuretable.txt6
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