Skip to content

Conversation

beqjanus
Copy link
Contributor

This PR addresses one of the causes of the increased missing meshes following a TP. I do not believe it will fix the "missing mesh on login" which may be related but still occurs. It has completely eliminated the loss of body parts and other meshes going missing after a TP in all of my testing and regular usage.

The check in llvovolume for gMeshRepo.meshRezEnabled() has the side-effect of testing the region asset caps. After TP this is frequently failing and any mesh items in rebuildGeom at that moment will be excluded.

Another option is to remove the check in llvovolume.cpp but as that was deliberately added as part of SL-5161 it is not clear whether that would be acceptable.

Monty Linden confirmed that no current server version will decline that asset cap.

Note that all this does is change the expected response to optimistic. If the region returned false, subsequent updates would be treated correctly.

The check in llvovolume for gMeshRepo.meshRezEnabled() has the side-effect of testing the region asset caps. After TP this is frequently failing and any mesh items in rebuildGeom at that moment will be excluded. Another option is to remove the check in llvovolume.cpp but as that was deliberately added as part of SL-5161 it is not clear whether that would be acceptable. Monty Linden confirmed that no current server version will decline that asset cap. Note that all this does is change the expected response to optimistic. If the region did return false subsequent updates would be treated correctly.
@github-actions github-actions bot added the c/cpp label May 13, 2025
@Ansariel
Copy link
Contributor

Ansariel commented May 14, 2025

As already discussed internally, LLViewerRegion::meshRezEnabled() should either be removed entirely if it is guaranteed mesh rezzing will never be disabled again.

Otherwise the correct way to handle this situation would be to check for LLViewerRegion::simulatorFeaturesReceived() in LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group). If the simulator features haven't been received yet, register for the callback when these arrive via LLViewerRegion::setSimulatorFeaturesReceivedCallback and store the affected LLSpatialGroups to have their geometry rebuild when the callback is triggered.


bool LLViewerRegion::meshRezEnabled() const
{
if(!mSimulatorFeaturesReceived)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: add an in-code comment that explains why this hack is needed.

P.S. By this point meshRezEnabled is mission critical. Perhaps just deprecate it and assume meshes are always supported?

@akleshchev akleshchev requested review from Geenz and kylelinden May 14, 2025 11:30
@akleshchev
Copy link
Contributor

Thank you for your contribution. But it appears that meshRezEnabled is just another 'new feature off button' that lost it's purpose once feature was deployed fully. After discussion it was decided that it's better to just remove the check.

@akleshchev akleshchev closed this May 14, 2025
@github-actions github-actions bot locked and limited conversation to collaborators May 14, 2025
@akleshchev
Copy link
Contributor

#4084

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants