Skip to content

Update OVRTX runtime to 0.4.1 - #7108

Merged
nvsekkin merged 7 commits into
isaac-sim:developfrom
nvsekkin:esekkin/ovrtx-041
Aug 18, 2026
Merged

Update OVRTX runtime to 0.4.1#7108
nvsekkin merged 7 commits into
isaac-sim:developfrom
nvsekkin:esekkin/ovrtx-041

Conversation

@nvsekkin

@nvsekkin nvsekkin commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

Description

Update Isaac Lab to the exact public OVRTX 0.4.1.364340 release and adopt its rendering, packaging, and determinism fixes.

Changes

  • Pin ovrtx==0.4.1.364340 and resolve it explicitly from public PyPI.
  • Enable synchronous OVRTX texture streaming.
  • Enable production GPU-transform reads in rendering tests.
  • Remove the complete OMPE-102610 first-write host-SYNC Points workaround.
  • Require first-write particle/deformable updates through GPU ASYNC.
  • Remove OVRTX 0.4 texture-readiness and motion xfails fixed by 0.4.1.
  • Remove crash-stable Lift MDL skips.
  • Restore Cartpole OVRTX RGB/RGBA to the normal 1.5% threshold.
  • Keep the 3% OVRTX non-depth cap while preserving depth/distance thresholds.
  • Add the required OVRTX-only third motion-history frame for NVBug 6565960.
  • Refresh 21 validated OVRTX texture, color, and motion goldens.
  • Update public installation documentation and proprietary-license aliases.

The existing ovphysx==0.5.9 and ovstage==0.1.0.346039 pins remain unchanged. Their companion bump will be handled separately and must preserve the exact OVRTX 0.4.1 pin.

Intentional deferrals

  • Keep the PXR one-thread limit and Newton motion-vector skips.
  • Keep the Franka cloth/soft instance-segmentation quarantines.
  • Keep the Franka-soft OVPhysX/OVRTX depth quarantine.
  • OVStage is not production-ready and is not a merge criterion for this PR.

Validation

Local validation:

  • uv lock --check
  • Formatting, lint, changelog, and Git LFS checks passed.
  • Focused dependency, renderer-contract, particle-binding, and parametrization tests passed.
  • All six required legacy kitless files passed the albedo, Minimal 2, and Minimal 3 scope:
    • 27 passed
    • 9 intentional unsupported-backend skips
    • no retries
  • Lift MDL selections completed 30 fresh processes without crash, hang, or timeout.
  • Cartpole OVRTX RGB/RGBA completed 10/10 fresh processes at 0.00% diff without retries.
  • Shadow Hand frame-3 motion completed 10/10 at 0.00% diff without retries.
  • Lift homogeneous frame-3 motion completed 10/10; every fresh process required one inherited retry:
    • first attempt: 18.85% diff
    • retry: 0.00% diff
  • All 21 changed goldens reviewed visually.

Additional integration fixes

  • Temporarily quarantine the unrelated crashing Franka-soft environment smoke tasks.
  • Fix the handover preset test after the merged manager-task refactor replaced ObjectCfg with BALL_CFG.
  • Note: Transient files.pythonhosted.org HTTP 502 failures are being rerun and are unrelated to the change.

Type of change

  • Bug fix
  • Dependency update
  • Test/golden update
  • Documentation update

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have added a changelog fragment under source/<pkg>/changelog.d/ for every touched package (do not edit CHANGELOG.rst or bump extension.toml — CI handles that)
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@nvsekkin
nvsekkin requested a review from a team August 15, 2026 00:47
@github-actions github-actions Bot added documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team infrastructure labels Aug 15, 2026
@greptile-apps

greptile-apps Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Updates Isaac Lab to the exact public OVRTX 0.4.1 runtime and aligns renderer behavior, dependency resolution, documentation, tests, and golden images with that release.

  • Pins OVRTX 0.4.1.364340 to public PyPI and enables synchronous texture streaming.
  • Removes obsolete particle initialization workarounds and rendering-test quarantines.
  • Revises rendering thresholds, motion-history setup, smoke-test exclusions, licensing aliases, and validated golden images.

Confidence Score: 5/5

The PR appears safe to merge because no blocking failure remains within the eligible follow-up-review scope.

No blocking failure remains.

Important Files Changed

Filename Overview
pyproject.toml Pins the exact OVRTX release and explicitly resolves it from public PyPI.
source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py Adopts OVRTX 0.4.1 configuration options and removes the obsolete first-write host synchronization workaround.
source/isaaclab_tasks/test/rendering_test_utils.py Updates OVRTX test tolerances, motion-history stepping, and release-specific quarantine behavior.
source/isaaclab_tasks/test/env_test_utils.py Adds explicit smoke-test skips for two native-crashing Franka-soft tasks.
.github/workflows/license-check.yaml Extends license exception matching to accept configured aliases.
uv.lock Resolves the exact OVRTX release from public PyPI while retaining the existing dependency graph.

Reviews (3): Last reviewed commit: "test: Fix handover preset merge regressi..." | Re-trigger Greptile

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

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.

Isaac Lab Review Bot

The OVRTX 0.4.1 dependency, public-index routing, synchronous texture streaming, updated rendering expectations, and golden-image rebaselines are internally consistent. One documentation inconsistency remains: the installation section now directs users to public PyPI while still stating that ovrtx is hosted on pypi.nvidia.com.

  • Design and architecture: The renderer-specific configuration remains contained in isaaclab_ov, while the dependency range and public-index routing are consistently reflected in the project metadata and lockfile. No architectural concern was identified.
  • API: No public Isaac Lab API compatibility issue was identified. The changed parametrization helper signatures are test-local, and their callers are updated in the patch.
  • Implementation: The renderer construction, dependency resolution, test parametrization, tolerance selection, and updated rendering baselines align with the OVRTX 0.4.1 migration. Before merge, update the unchanged hosting statement in docs/source/overview/core-concepts/renderers.rst so it no longer contradicts the new public-PyPI installation guidance.

Minor fixes needed. Posted 1 actionable finding inline.

Automated review; human maintainers own approval decisions.

Comment thread docs/source/overview/core-concepts/renderers.rst
@nvsekkin
nvsekkin marked this pull request as draft August 15, 2026 02:24
Comment thread source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py
Comment thread source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py Outdated
Comment thread source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py Outdated
Comment thread source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py Outdated
Comment thread source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py Outdated
Use the public OVRTX release, enable synchronous texture streaming, and
retire rendering exemptions fixed by the updated runtime.
Remove obsolete compatibility paths and align renderer configuration, license handling, and documentation with the required runtime.
Comment thread pyproject.toml Outdated
Keep release validation on the exact public OVRTX build instead of admitting unverified 0.4.x updates.

# OVRTX 0.4.1 rendering fixes allow a tighter tolerance for data types that
# are not dominated by scale-sensitive depth normalization.
_OVRTX_MAX_DIFFERENT_PIXELS_PERCENTAGE = 3.0

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Isaac RTX has already enabled the synchronous texture streaming - #6932 .

Instead of maintaining a per-renderer threshold, it seems we are good to have a unified threshold. But this can be done separately after we observe the CI for a few runs to be confident.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Agreed. I am keeping the renderer-specific cap in this PR. The OVRTX 0.4.1 legacy lane passed and focused fresh-process runs showed stable Cartpole output, but Lift motion still needed the inherited retry policy. Unifying or tightening the thresholds should remain a follow-up after more CI-host data.

nvsekkin and others added 4 commits August 17, 2026 17:39
Prevent native soft-lift crashes from aborting every environment smoke suite until the underlying issue is fixed.
Signed-off-by: Kelly Guo <kellyg@nvidia.com>
Restore the standard Cartpole tolerance, re-enable stable Lift MDL cases, and capture the required third motion frame with validated goldens.
Align the preset test with the shared BALL_CFG introduced by the merged manager-based handover refactor.

# Native crashes cannot be contained by xfail because the process exits before
# pytest records an outcome. Temporarily skip these tasks in every environment smoke suite.
SKIP_TASKS: dict[str, str] = {

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

unrelated error causing a crash that is in Isaaclab_tasks[3/3] that is coming from test_environments_isaacsim_physx.py. while the fix is in flight, temporarily skip this test.

# Users should use ``instance_segmentation`` or ``semantic_segmentation`` instead.
_OVRTX_DATA_TYPES = tuple(dt for dt in _DEFAULT_SENSOR_DATA_TYPES if dt != "instance_id_segmentation_fast")

_OVRTX_TEXTURE_READINESS_DATA_TYPES = (

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

updated all related goldens to these AOVs in all rendering correctness test cases.

"simple_shading_diffuse_mdl",
"simple_shading_full_mdl",
)
_OVRTX_TEXTURE_READINESS_XFAIL_REASON = "OVRTX 0.4 may return before textured materials are ready (NVBUG#6505191)."

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

updated all related goldens to these AOVs in all rendering correctness test cases.

)
_OVRTX_TEXTURE_READINESS_XFAIL_REASON = "OVRTX 0.4 may return before textured materials are ready (NVBUG#6505191)."
_KITLESS_STAGE_VARIANTS = ("legacy", "ovstage")
_LIFT_RENDERER_CRASH_SKIP_REASON = "Lift kitless OVRTX MDL rendering can kill the test process (NVBUG#6524987)."

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

in 30/30 local runs I did not observe the crash, removing skip to test this on CI 🤞

_OVRTX_TEXTURE_READINESS_XFAIL_REASON = "OVRTX 0.4 may return before textured materials are ready (NVBUG#6505191)."
_KITLESS_STAGE_VARIANTS = ("legacy", "ovstage")
_LIFT_RENDERER_CRASH_SKIP_REASON = "Lift kitless OVRTX MDL rendering can kill the test process (NVBUG#6524987)."
_OVRTX_CLOTH_MOTION_XFAIL_REASON = "Missing cloth in OVRTX 0.4 motion vectors (NVBUG#6489754)."

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

cloth is now visible (needed to move rendering 1 frame up - will be addressed in a future release, not a blocker)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

locally I was able to repeatedly get deterministic outputs for this frame, updated golden.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

this file can be removed since we are getting rid of the xfails

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

we can do it separately, and have the version pin go in first.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

sounds good, I can have a follow up PR to remove this file

@nvsekkin
nvsekkin requested a review from huidongc August 18, 2026 06:42
@nvsekkin
nvsekkin marked this pull request as ready for review August 18, 2026 06:42
@nvsekkin
nvsekkin requested a review from myurasov-nv as a code owner August 18, 2026 06:42
from isaaclab_physx.physics import PhysxCfg

from isaaclab_tasks.core.handover.handover_env_cfg import HandoverEnvCfg, ObjectCfg
from isaaclab_tasks.core.handover.handover_env_cfg import BALL_CFG, HandoverEnvCfg

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

this is unrelated to the PR, also addressed in #7144 - kept in this PR for speed

@nvsekkin

Copy link
Copy Markdown
Collaborator Author

@greptile review

return make_skip_rendering_params(
params,
{
(variant, physics_backend, "ovrtx_renderer", data_type): _LIFT_RENDERER_CRASH_SKIP_REASON

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

empirically validated this on local runs, let's keep an eye out for this one in CI

return

if callspec.params.get("renderer") == "ovrtx_renderer":
monkeypatch.setenv("ISAAC_LAB_OVRTX_READ_GPU_TRANSFORMS", "0")

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

removed this workaround


# Remove the extra step when NVBug 6565960 is fixed.
if renderer == "ovrtx_renderer":
num_steps += 1

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

new known workaround, will be addressed in ovrtx-0.5.0


# Allow OVRTX Cartpole RGB/RGBA variation tracked by NVBUG#6152566; the SSIM gate remains enabled. The
# deterministic Warp rasterizer and the Isaac RTX reference path keep the stricter env-wide threshold.
_CARTPOLE_OVRTX_RGB_MAX_DIFFERENT_PIXELS_PERCENTAGE = 2.0

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

no longer need to single this out, it's now deterministic

@huidongc huidongc mentioned this pull request Aug 18, 2026
7 tasks
@nvsekkin
nvsekkin merged commit eed452c into isaac-sim:develop Aug 18, 2026
217 of 237 checks passed
This was referenced Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation infrastructure isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants