Skip to content

RS Local texture parameters latency improvements#129

Open
egorovaanastasiia wants to merge 2 commits intoRS3.0-UE5.3from
30790_rsl_tp_improvements
Open

RS Local texture parameters latency improvements#129
egorovaanastasiia wants to merge 2 commits intoRS3.0-UE5.3from
30790_rsl_tp_improvements

Conversation

@egorovaanastasiia
Copy link
Copy Markdown
Contributor

@egorovaanastasiia egorovaanastasiia commented Mar 24, 2026

DSOF-30790

Description:
Texture parameters for RSL were reported to have a high latency, around 5-9 frames.

This PR consists of d3 changes in https://github.com/disguise-one/d3/pull/5933 and plugin changes in this PR.

There are 2 main changes in plugin:

  • Creating new rs_registerTextureParams() API endpoint to read shared texture before using it. Must be called from the UE render thread.
  • In case of running old d3 version + RS3.0 UE plugin , we'd like to log an error message explaining why workload has crashed. To achieve it, I made some changes to RenderStream::StartupModule() logic, so we cache the error, load rs_logToD3 and show the message in d3before closing UE.

@egorovaanastasiia egorovaanastasiia self-assigned this Mar 24, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 24, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5e30bf18-74b1-4d8f-8196-6c76a1ce943e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 30790_rsl_tp_improvements

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@egorovaanastasiia egorovaanastasiia marked this pull request as draft March 24, 2026 14:41
@egorovaanastasiia egorovaanastasiia marked this pull request as ready for review March 24, 2026 18:48
@pkevin-disguise
Copy link
Copy Markdown
Contributor

in the description, we have a case for old version of d3 + the new plugin. what about the new version of d3 + old plugin case?

@egorovaanastasiia
Copy link
Copy Markdown
Contributor Author

in the description, we have a case for old version of d3 + the new plugin. what about the new version of d3 + old plugin case?

Sorry, mentioned it in the other PR but not here: newer d3 + old plugin would still work, just with no improvements for "Waiting in cache"

}
if (!GIsEditor)
{
FPlatformMisc::RequestExit(true);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I wonder if this will suffer from the same exit infinite loop issue as the one seen in the UE ghost process problem. Try this in an nDisplay session with 2 RXs.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No, both RXs in this case kill the UE process. All good

ENQUEUE_RENDER_COMMAND(RegisterTextureParams)([](FRHICommandListImmediate& RHICmdList) {
RenderStreamLink::instance().rs_registerTextureParams();
});
FlushRenderingCommands();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'm worried about the performance impact of synchronizing the GPU and CPU threads with the flush. If we really need the flush, please check performance is not impacted too much.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

You might be right. Seems like with a heavier scene with 9 TPs the fps of the streams dropped by 2-3 frames

RenderStreamLink::RenderStreamLink()
{
loadExplicit();
FString unused;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Unused ? Why do we need this ?

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

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants