don't let GFXD3D11TextureTarget::deactivate() try to generate mips if we haven't told that target to do so

This commit is contained in:
AzaezelX 2025-08-04 14:11:00 -05:00
parent 7fcdd03b50
commit 3cdbd4e87e
3 changed files with 16 additions and 6 deletions

View file

@ -276,11 +276,18 @@ void GFXD3D11TextureTarget::deactivate()
//re-gen mip maps
for (U32 i = 0; i < 6; i++)
{
ID3D11ShaderResourceView* pSRView = mTargetSRViews[GFXTextureTarget::Color0 + i];
if (pSRView)
D3D11DEVICECONTEXT->GenerateMips(pSRView);
}
D3D11_TEXTURE2D_DESC desc;
if (mResolveTargets[GFXTextureTarget::Color0 + i])
{
mResolveTargets[GFXTextureTarget::Color0 + i]->get2DTex()->GetDesc(&desc);
if (desc.MiscFlags & D3D11_RESOURCE_MISC_GENERATE_MIPS)
{
ID3D11ShaderResourceView* pSRView = mTargetSRViews[GFXTextureTarget::Color0 + i];
if (pSRView)
D3D11DEVICECONTEXT->GenerateMips(pSRView);
}
}
}
}
void GFXD3D11TextureTarget::resolve()

View file

@ -108,6 +108,7 @@ void GFXD3D11TextureManager::_innerCreateTexture( GFXD3D11TextureObject *retTex,
(numMipLevels == 0 || numMipLevels > 1)&&
!(depth > 0) )
{
if (numMipLevels == 5) Con::errorf("GFXD3D11TextureManager::_innerCreateTexture - numMipLevels == 5 found!");
miscFlags |= D3D11_RESOURCE_MISC_GENERATE_MIPS;
bindFlags |= D3D11_BIND_RENDER_TARGET; // in order to automatically generate mips. Resource needs to be a rendertarget and shader resource
}

View file

@ -849,7 +849,9 @@ void PostEffect::_setupConstants( const SceneRenderState *state )
if (mMipCountSC[i]->isValid())
{
mShaderConsts->set(mMipCountSC[i], (S32)mActiveTextures[i]->getMipLevels());
S32 mipLevels = (S32)mActiveTextures[i]->getMipLevels();
mShaderConsts->set(mMipCountSC[i], mipLevels);
if (mipLevels == 5) Con::errorf("PostEffect::_setupConstants - mipLevels == 5 found!");
}
}