From 8d38fa0bc4ce228fe79656abaa0b83c5c22405e0 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Wed, 6 Aug 2025 12:57:59 -0500 Subject: [PATCH] gl side mip sanity clamps --- Engine/source/gfx/gl/gfxGLTextureManager.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Engine/source/gfx/gl/gfxGLTextureManager.cpp b/Engine/source/gfx/gl/gfxGLTextureManager.cpp index 636426240..ae6ce898c 100644 --- a/Engine/source/gfx/gl/gfxGLTextureManager.cpp +++ b/Engine/source/gfx/gl/gfxGLTextureManager.cpp @@ -116,10 +116,18 @@ void GFXGLTextureManager::innerCreateTexture( GFXGLTextureObject *retTex, { retTex->mMipLevels = numMipLevels > 1 ? numMipLevels : 0; } - else if(profile->testFlag(GFXTextureProfile::NoMipmap) || profile->testFlag(GFXTextureProfile::RenderTarget) || numMipLevels == 1 || retTex->mIsNPoT2) + else if(profile->testFlag(GFXTextureProfile::NoMipmap) || numMipLevels == 1) { retTex->mMipLevels = 1; } + else if (profile->testFlag(GFXTextureProfile::RenderTarget)) + { + if (numMipLevels == 0) //auto + numMipLevels = mFloor(mLog2(mMax(width, height))) + 1; + else if (numMipLevels > 1) //capped + numMipLevels = mMin(numMipLevels, mFloor(mLog2(mMax(width, height))) + 1); + retTex->mMipLevels = mClampF(numMipLevels, 1, 13); + } else { retTex->mMipLevels = numMipLevels;