FIRE-32688 - Area Search Improvements

Part 1: These changes prevent some of the aggressive culling that has prevented area search from working. They  work best in combination with changes to the aggressive culling that better fit the viewer's memory footprint. These changes are committed separately to make it easier to change them
master
Beq 2023-07-10 01:35:01 +01:00
parent c04f13968e
commit 6eb96153e6
4 changed files with 13 additions and 2 deletions

View File

@ -173,6 +173,7 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) :
mRequestNeedsSent(false),
mRlvBehaviorCallbackConnection()
{
LLViewerRegion::sFSAreaSearchActive = true;
mFactoryMap["area_search_list_panel"] = LLCallbackMap(createPanelList, this);
mFactoryMap["area_search_find_panel"] = LLCallbackMap(createPanelFind, this);
mFactoryMap["area_search_filter_panel"] = LLCallbackMap(createPanelFilter, this);
@ -188,6 +189,7 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) :
FSAreaSearch::~FSAreaSearch()
{
LLViewerRegion::sFSAreaSearchActive = false;
if (!gIdleCallbacks.deleteFunction(idle, this))
{
LL_WARNS("FSAreaSearch") << "FSAreaSearch::~FSAreaSearch() failed to delete callback" << LL_ENDL;

View File

@ -106,6 +106,7 @@
const S32 MAX_CAP_REQUEST_ATTEMPTS = 30;
const U32 DEFAULT_MAX_REGION_WIDE_PRIM_COUNT = 15000;
BOOL LLViewerRegion::sFSAreaSearchActive = FALSE;
BOOL LLViewerRegion::sVOCacheCullingEnabled = FALSE;
S32 LLViewerRegion::sLastCameraUpdated = 0;
S32 LLViewerRegion::sNewObjectCreationThrottle = -1;

View File

@ -478,6 +478,7 @@ public:
std::vector<U32> mMapAvatars;
std::vector<LLUUID> mMapAvatarIDs;
static BOOL sFSAreaSearchActive; // <FS:Beq/> FIRE-32688 Area Search improvements
static BOOL sVOCacheCullingEnabled; //vo cache culling enabled or not.
static S32 sLastCameraUpdated;

View File

@ -432,6 +432,7 @@ F32 LLVOCacheEntry::getSquaredPixelThreshold(bool is_front)
bool LLVOCacheEntry::isAnyVisible(const LLVector4a& camera_origin, const LLVector4a& local_camera_origin, F32 dist_threshold)
{
if( LLViewerRegion::sFSAreaSearchActive ) { return true; } // <FS:Beq/> FIRE-32688 Area Search improvements
LLOcclusionCullingGroup* group = (LLOcclusionCullingGroup*)getGroup();
if(!group)
{
@ -928,7 +929,10 @@ S32 LLVOCachePartition::cull(LLCamera &camera, bool do_occlusion)
//process back objects selection
selectBackObjects(camera, LLVOCacheEntry::getSquaredPixelThreshold(mFrontCull),
do_occlusion && use_object_cache_occlusion);
// <FS:Beq> FIRE-32688 Area Search improvements
// do_occlusion && use_object_cache_occlusion);
do_occlusion && use_object_cache_occlusion && !LLViewerRegion::sFSAreaSearchActive);
// </FS:Beq>
return 0; //nothing changed, reduce frequency of culling
}
}
@ -942,7 +946,10 @@ S32 LLVOCachePartition::cull(LLCamera &camera, bool do_occlusion)
camera.calcRegionFrustumPlanes(region_agent, gAgentCamera.mDrawDistance);
mFrontCull = TRUE;
LLVOCacheOctreeCull culler(&camera, mRegionp, region_agent, do_occlusion && use_object_cache_occlusion,
// <FS:Beq> FIRE-32688 Area Search improvements
// LLVOCacheOctreeCull culler(&camera, mRegionp, region_agent, do_occlusion && use_object_cache_occlusion,
LLVOCacheOctreeCull culler(&camera, mRegionp, region_agent, do_occlusion && use_object_cache_occlusion && !LLViewerRegion::sFSAreaSearchActive,
// </FS:Beq>
LLVOCacheEntry::getSquaredPixelThreshold(mFrontCull), this);
culler.traverse(mOctree);