summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorRye Mutt <rye@alchemyviewer.org>2023-09-28 16:05:37 -0400
committerGitHub <noreply@github.com>2023-09-28 15:05:37 -0500
commita4c2eab969b1971389408de5a3927f87d74a6d6d (patch)
tree0336e86ccab4476ae1e9f0851752ce4e516be6b0 /indra/newview
parentb49632f4278078b0d10129a8c6742e145946cfff (diff)
Fix integer overflow when framebuffers are extremely high resolution resulting in INT_MAX texture bias (#393)
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llviewertexture.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 9fc092d4b9..9336d99555 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -534,9 +534,12 @@ void LLViewerTexture::updateClass()
static LLCachedControl<U32> max_vram_budget(gSavedSettings, "RenderMaxVRAMBudget", 0);
+ F64 texture_bytes_alloc = LLImageGL::getTextureBytesAllocated() / 1024.0 / 512.0;
+ F64 vertex_bytes_alloc = LLVertexBuffer::getBytesAllocated() / 1024.0 / 512.0;
+
// get an estimate of how much video memory we're using
// NOTE: our metrics miss about half the vram we use, so this biases high but turns out to typically be within 5% of the real number
- F32 used = (LLImageGL::getTextureBytesAllocated() + LLVertexBuffer::getBytesAllocated()) / 1024 / 512;
+ F32 used = (F32)ll_round(texture_bytes_alloc + vertex_bytes_alloc);
F32 budget = max_vram_budget == 0 ? gGLManager.mVRAM : max_vram_budget;