diff options
author | Rye Mutt <rye@alchemyviewer.org> | 2024-08-21 10:47:31 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-21 09:47:31 -0500 |
commit | db84bf9567c27e266ccc6b1b6aed089c6022fe91 (patch) | |
tree | bcf9edf9968e4087621a9e55ea02743671b45c12 /indra/llrender/llcubemaparray.cpp | |
parent | a0da63db57b4799cf67df4618afe70760840a719 (diff) |
Improve accuracy of texture memory tracking (#2371)
* Fix alloc_tex_image to account for more missing texture memory
Change alloc_tex_image calls to pass internal format to properly account for used image type
* Fix scaleDown passing primary format in place of internal format to glTexImage2D
* Make texture debug view and texture bias calculation consistent and remove double accounting for render target textures
Diffstat (limited to 'indra/llrender/llcubemaparray.cpp')
-rw-r--r-- | indra/llrender/llcubemaparray.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/indra/llrender/llcubemaparray.cpp b/indra/llrender/llcubemaparray.cpp index be69b997da..4f5e13765a 100644 --- a/indra/llrender/llcubemaparray.cpp +++ b/indra/llrender/llcubemaparray.cpp @@ -125,27 +125,25 @@ void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count, bool us mImage->setHasMipMaps(use_mips); bind(0); + free_cur_tex_image(); U32 format = components == 4 ? GL_RGBA16F : GL_RGB16F; - U32 mip = 0; - - free_cur_tex_image(); - - while (resolution >= 1) + U32 mip_resolution = resolution; + while (mip_resolution >= 1) { - glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, mip, format, resolution, resolution, count * 6, 0, + glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, mip, format, mip_resolution, mip_resolution, count * 6, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr); if (!use_mips) { break; } - resolution /= 2; + mip_resolution /= 2; ++mip; } - alloc_tex_image(resolution * 6, resolution, format); + alloc_tex_image(resolution, resolution, format, count * 6); mImage->setAddressMode(LLTexUnit::TAM_CLAMP); |