Skip to content

Budget incremental reflection probe updates - #6033

Draft
LisaScheers wants to merge 1 commit into
secondlife:developfrom
LisaScheers:lis/sl-budget-reflection-updates
Draft

Budget incremental reflection probe updates#6033
LisaScheers wants to merge 1 commit into
secondlife:developfrom
LisaScheers:lis/sl-budget-reflection-updates

Conversation

@LisaScheers

@LisaScheers LisaScheers commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Description

Adds a token-bucket CPU budget for incremental, non-realtime reflection probe face updates.

The scheduler measures actual update time, smooths the observed cost, accrues a configurable allowance each frame, and caps idle credit. It forces progress after 30 deferred frames so probe generation cannot stall indefinitely.

RenderReflectionProbeUpdateBudget defaults to 1 ms per frame. Setting it to 0 restores the previous unthrottled behavior. Explicit realtime probes retain their existing six-face-per-frame behavior.

A native Apple Silicon profile of the closely related Firestorm viewer placed LLReflectionMapManager::update() / doProbeUpdate() on roughly 8% of main-thread samples even with static-only reflections. The official develop branch contains the same one-face-per-frame incremental scheduler.

Related Issues

  • Please link to a relevant GitHub issue for additional context.

Issue Link: None; opened as a draft for upstream performance evaluation.


Checklist

  • I have provided a clear title and detailed description for this pull request.
  • If useful, I have included media such as screenshots and video to show off my changes.
  • The PR is linked to a relevant issue with sufficient context.
  • I have tested the changes locally and verified they work as intended.
  • All new and existing tests pass.
  • Code follows the project's style guidelines.
  • Documentation has been updated if needed.
  • Any dependent changes have been merged and published in downstream modules.
  • I have reviewed the contributing guidelines.

Additional Notes

Validation performed:

  • clean git diff --check
  • xmllint --noout indra/newview/app_settings/settings.xml
  • exact stable patch-ID match with the Firestorm implementation
  • reviewed credit accrual, measured-cost debit, disabled-budget behavior, and starvation escape

A full official viewer build was not available because this host lacks the autobuild dependency bundle and full Xcode toolchain. This remains a draft pending native build and benchmark coverage.

@github-actions github-actions Bot added the c/cpp label Jul 23, 2026
@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@LisaScheers

Copy link
Copy Markdown
Contributor Author

recheck

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant