diff options
author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-03-01 13:21:16 +0200 |
---|---|---|
committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-03-01 13:41:42 +0200 |
commit | 97a103255e433629f13e2156aa307ca329cdcfc6 (patch) | |
tree | bf5de1cef5930647c4ab87a0cff7f88f0007832d /indra/newview/llviewertexturelist.cpp | |
parent | 92c302d6fba687f0921544b278e22b698d058646 (diff) | |
parent | 6ca09a94554ec01f5c94ec60fffd01d7e33f3546 (diff) |
Merge branch 'master' (DRTVWR-557) into DRTVWR-546
# Conflicts:
# autobuild.xml
# doc/contributions.txt
# indra/cmake/GLOD.cmake
# indra/llcommon/tests/llprocess_test.cpp
# indra/newview/VIEWER_VERSION.txt
# indra/newview/lldrawpoolavatar.cpp
# indra/newview/llfloatermodelpreview.cpp
# indra/newview/llmodelpreview.cpp
# indra/newview/llviewertexturelist.cpp
# indra/newview/llvovolume.cpp
# indra/newview/viewer_manifest.py
Diffstat (limited to 'indra/newview/llviewertexturelist.cpp')
-rw-r--r-- | indra/newview/llviewertexturelist.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index dd18cdc9e8..94a91d4a72 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -204,6 +204,9 @@ static std::string get_texture_list_name() void LLViewerTextureList::doPrefetchImages() { LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE; + gTextureTimer.start(); + gTextureTimer.pause(); + if (LLAppViewer::instance()->getPurgeCache()) { // cache was purged, no point @@ -1401,6 +1404,33 @@ S32Megabytes LLViewerTextureList::getMaxVideoRamSetting(bool get_recommended, fl return max_texmem; } +bool LLViewerTextureList::isPrioRequestsFetched() +{ + static LLCachedControl<F32> prio_threshold(gSavedSettings, "TextureFetchUpdatePriorityThreshold", 0.0f); + static LLCachedControl<F32> fetching_textures_threshold(gSavedSettings, "TextureListFetchingThreshold", 0.97f); + S32 fetching_tex_count = 0; + S32 tex_count_threshold = gTextureList.mImageList.size() * (1 - fetching_textures_threshold); + + for (LLViewerTextureList::image_priority_list_t::iterator iter = gTextureList.mImageList.begin(); + iter != gTextureList.mImageList.end(); ) + { + LLPointer<LLViewerFetchedTexture> imagep = *iter++; + if (imagep->getDecodePriority() > prio_threshold) + { + if (imagep->hasFetcher() || imagep->isFetching()) + { + fetching_tex_count++; + if (fetching_tex_count >= tex_count_threshold) + { + return false; + } + } + } + } + + return true; +} + const S32Megabytes VIDEO_CARD_FRAMEBUFFER_MEM(12); const S32Megabytes MIN_MEM_FOR_NON_TEXTURE(512); void LLViewerTextureList::updateMaxResidentTexMem(S32Megabytes mem) |