LLPipeline::rebuildGroups() optimized a bit.
This commit is contained in:
@@ -1816,6 +1816,11 @@ void LLPipeline::rebuildPriorityGroups()
|
|||||||
|
|
||||||
void LLPipeline::rebuildGroups()
|
void LLPipeline::rebuildGroups()
|
||||||
{
|
{
|
||||||
|
if (mGroupQ2.empty())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Iterate through some drawables on the non-priority build queue
|
// Iterate through some drawables on the non-priority build queue
|
||||||
S32 size = (S32) mGroupQ2.size();
|
S32 size = (S32) mGroupQ2.size();
|
||||||
S32 min_count = llclamp((S32) ((F32) (size * size)/4096*0.25f), 1, size);
|
S32 min_count = llclamp((S32) ((F32) (size * size)/4096*0.25f), 1, size);
|
||||||
@@ -1825,33 +1830,28 @@ void LLPipeline::rebuildGroups()
|
|||||||
std::sort(mGroupQ2.begin(), mGroupQ2.end(), LLSpatialGroup::CompareUpdateUrgency());
|
std::sort(mGroupQ2.begin(), mGroupQ2.end(), LLSpatialGroup::CompareUpdateUrgency());
|
||||||
|
|
||||||
LLSpatialGroup::sg_vector_t::iterator iter;
|
LLSpatialGroup::sg_vector_t::iterator iter;
|
||||||
|
LLSpatialGroup::sg_vector_t::iterator last_iter = mGroupQ2.begin();
|
||||||
|
|
||||||
for (iter = mGroupQ2.begin();
|
for (iter = mGroupQ2.begin();
|
||||||
iter != mGroupQ2.end(); ++iter)
|
iter != mGroupQ2.end() && count <= min_count; ++iter)
|
||||||
{
|
{
|
||||||
LLSpatialGroup* group = *iter;
|
LLSpatialGroup* group = *iter;
|
||||||
|
last_iter = iter;
|
||||||
|
|
||||||
if (group->isDead())
|
if (!group->isDead())
|
||||||
{
|
{
|
||||||
continue;
|
group->rebuildGeom();
|
||||||
}
|
|
||||||
|
|
||||||
group->rebuildGeom();
|
if (group->mSpatialPartition->mRenderByGroup)
|
||||||
|
{
|
||||||
if (group->mSpatialPartition->mRenderByGroup)
|
count++;
|
||||||
{
|
}
|
||||||
count++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group->clearState(LLSpatialGroup::IN_BUILD_Q2);
|
group->clearState(LLSpatialGroup::IN_BUILD_Q2);
|
||||||
|
|
||||||
if (count > min_count)
|
|
||||||
{
|
|
||||||
++iter;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mGroupQ2.erase(mGroupQ2.begin(), iter);
|
mGroupQ2.erase(mGroupQ2.begin(), ++last_iter);
|
||||||
|
|
||||||
updateMovedList(mMovedBridge);
|
updateMovedList(mMovedBridge);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user