diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/VIEWER_VERSION.txt | 2 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.h | 2 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 51 | 
3 files changed, 9 insertions, 46 deletions
| diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 10abd6ae5b..5db1411e12 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -6.6.6 +6.6.7 diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index f7bc9fb644..6d3ef33801 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -264,7 +264,7 @@ public:                  return lhs->mAvatarp < rhs->mAvatarp;              } -            return lhs->mRenderOrder < rhs->mRenderOrder; +            return lhs->mRenderOrder > rhs->mRenderOrder;          }      }; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index e24d131345..d98a40d188 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -5551,7 +5551,7 @@ static inline void add_face(T*** list, U32* count, T* face)      {          if (count[1] < MAX_FACE_COUNT)          { -            //face->setDrawOrderIndex(count[1]); +            face->setDrawOrderIndex(count[1]);              list[1][count[1]++] = face;          }      } @@ -5559,36 +5559,12 @@ static inline void add_face(T*** list, U32* count, T* face)      {          if (count[0] < MAX_FACE_COUNT)          { -            //face->setDrawOrderIndex(count[0]); +            face->setDrawOrderIndex(count[0]);              list[0][count[0]++] = face;          }      }  } -// return index into linkset for given object (0 for root prim) -U32 get_linkset_index(LLVOVolume* vobj) -{ -    LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE; -    if (vobj->isRootEdit()) -    { -        return 0; -    } - -    LLViewerObject* root = vobj->getRootEdit(); -    U32 idx = 1; -    for (const auto& child : root->getChildren()) -    { -        if (child == vobj) -        { -            return idx; -        } -        ++idx; -    } - -    llassert(false); -    return idx; //should never get here -} -  void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME; @@ -5750,8 +5726,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)              {                  avatar->addAttachmentOverridesForObject(vobj, NULL, false);              } -             -            U32 linkset_index = get_linkset_index(vobj);              // Standard rigged mesh attachments:   			bool rigged = !vobj->isAnimatedObject() && skinInfo && vobj->isAttachment(); @@ -5772,9 +5746,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  					continue;  				} -                // order by linkset index first and face index second -                facep->setDrawOrderIndex(linkset_index * 100 + i); -  				//ALWAYS null out vertex buffer on rebuild -- if the face lands in a render  				// batch, it will recover its vertex buffer reference from the spatial group  				facep->setVertexBuffer(NULL); @@ -5799,6 +5770,11 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)                      if (facep->isState(LLFace::RIGGED))                      {                           //face is not rigged but used to be, remove from rigged face pool +                        LLDrawPoolAvatar* pool = (LLDrawPoolAvatar*)facep->getPool(); +                        if (pool) +                        { +                            pool->removeFace(facep); +                        }                          facep->clearState(LLFace::RIGGED);                          facep->mAvatar = NULL;                          facep->mSkinInfo = NULL; @@ -6252,14 +6228,6 @@ struct CompareBatchBreakerRigged      }  }; -struct CompareDrawOrder -{ -    bool operator()(const LLFace* const& lhs, const LLFace* const& rhs) -    { -        return lhs->getDrawOrderIndex() < rhs->getDrawOrderIndex(); -    } -}; -  U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace** faces, U32 face_count, BOOL distance_sort, BOOL batch_textures, BOOL rigged)  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME; @@ -6303,11 +6271,6 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace                  //sort faces by things that break batches, including avatar and mesh id                  std::sort(faces, faces + face_count, CompareBatchBreakerRigged());              } -            else -            { -                // preserve legacy draw order for rigged faces -                std::sort(faces, faces + face_count, CompareDrawOrder()); -            }          }          else if (!distance_sort)          { | 
