Add WebXR mesh API foundation [chromium/src : main]

38 views
Skip to first unread message

David Li (Gerrit)

unread,
Feb 18, 2026, 12:34:35 PMFeb 18
to Adam Ren (xWF), Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
Attention needed from Adam Ren (xWF)

David Li added 3 comments

File third_party/blink/renderer/modules/xr/xr_mesh.cc
Line 13, Patchset 2 (Latest):#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
David Li . unresolved

This header is included again on line 7.

Line 67, Patchset 2 (Latest): DLOG(ERROR) << __func__ << "mesh_id=" << id
David Li . unresolved

Did you mean to keep this?

File third_party/blink/renderer/modules/xr/xr_mesh_manager.cc
Line 53, Patchset 2 (Latest): std::vector<device::MeshId> meshes_to_remove;
Open in Gerrit

Related details

Attention is currently required from:
  • Adam Ren (xWF)
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: If83c6b643843fb4f23c8695d2c275cfa4b2b9ca9
Gerrit-Change-Number: 7579915
Gerrit-PatchSet: 2
Gerrit-Owner: Adam Ren (xWF) <ada...@google.com>
Gerrit-CC: David Li <dav...@google.com>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-Attention: Adam Ren (xWF) <ada...@google.com>
Gerrit-Comment-Date: Wed, 18 Feb 2026 17:34:26 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

David Li (Gerrit)

unread,
Feb 18, 2026, 12:37:00 PMFeb 18
to Adam Ren (xWF), Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
Attention needed from Adam Ren (xWF)

David Li added 1 comment

File third_party/blink/renderer/modules/xr/xr_mesh_manager.cc
Open in Gerrit

Related details

Attention is currently required from:
  • Adam Ren (xWF)
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: If83c6b643843fb4f23c8695d2c275cfa4b2b9ca9
Gerrit-Change-Number: 7579915
Gerrit-PatchSet: 2
Gerrit-Owner: Adam Ren (xWF) <ada...@google.com>
Gerrit-CC: David Li <dav...@google.com>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-Attention: Adam Ren (xWF) <ada...@google.com>
Gerrit-Comment-Date: Wed, 18 Feb 2026 17:36:51 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

David Li (Gerrit)

unread,
Feb 18, 2026, 12:37:37 PMFeb 18
to Adam Ren (xWF), Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
Attention needed from Adam Ren (xWF)

David Li added 1 comment

File third_party/blink/renderer/modules/xr/xr_mesh_manager.cc
Line 60, Patchset 2 (Latest): mesh_ids_to_meshes_.erase(mesh_id);
David Li . resolved
David Li

oh nvm.

Open in Gerrit

Related details

Attention is currently required from:
  • Adam Ren (xWF)
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: If83c6b643843fb4f23c8695d2c275cfa4b2b9ca9
Gerrit-Change-Number: 7579915
Gerrit-PatchSet: 2
Gerrit-Owner: Adam Ren (xWF) <ada...@google.com>
Gerrit-CC: David Li <dav...@google.com>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-Attention: Adam Ren (xWF) <ada...@google.com>
Gerrit-Comment-Date: Wed, 18 Feb 2026 17:37:29 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: David Li <dav...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

gwsq (Gerrit)

unread,
Feb 18, 2026, 7:55:55 PMFeb 18
to Adam Ren (xWF), Chromium IPC Reviews, Daniel Cheng, Alexander Cooper, Alex Russell, David Li, Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
Attention needed from Alex Russell, Alexander Cooper and Daniel Cheng

Message from gwsq

From googleclient/chrome/chromium_gwsq/ipc/config.gwsq:
IPC: dch...@chromium.org

📎 It looks like you’re making a possibly security-sensitive change! 📎 IPC security review isn’t a rubberstamp, so your friendly security reviewer will need a fair amount of context to review your CL effectively. Please review your CL description and code comments to make sure they provide context for someone unfamiliar with your project/area. Pay special attention to where data comes from and which processes it flows between (and their privilege levels). Feel free to point your security reviewer at design docs, bugs, or other links if you can’t reasonably make a self-contained CL description. (Also see https://cbea.ms/git-commit/).

IPC reviewer(s): dch...@chromium.org


Reviewer source(s):
dch...@chromium.org is from context(googleclient/chrome/chromium_gwsq/ipc/config.gwsq)

Open in Gerrit

Related details

Attention is currently required from:
  • Alex Russell
  • Alexander Cooper
  • Daniel Cheng
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: If83c6b643843fb4f23c8695d2c275cfa4b2b9ca9
Gerrit-Change-Number: 7579915
Gerrit-PatchSet: 2
Gerrit-Owner: Adam Ren (xWF) <ada...@google.com>
Gerrit-Reviewer: Alex Russell <sligh...@chromium.org>
Gerrit-Reviewer: Alexander Cooper <alco...@chromium.org>
Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-CC: David Li <dav...@google.com>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-CC: gwsq
Gerrit-Attention: Alexander Cooper <alco...@chromium.org>
Gerrit-Attention: Alex Russell <sligh...@chromium.org>
Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
Gerrit-Comment-Date: Thu, 19 Feb 2026 00:55:31 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Adam Ren (xWF) (Gerrit)

unread,
Feb 18, 2026, 8:25:02 PMFeb 18
to Chromium IPC Reviews, Daniel Cheng, Alexander Cooper, Alex Russell, David Li, Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
Attention needed from Alex Russell, Alexander Cooper, Daniel Cheng and David Li

Adam Ren (xWF) added 3 comments

File third_party/blink/renderer/modules/xr/xr_mesh.cc
Line 13, Patchset 2 (Latest):#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
David Li . resolved

This header is included again on line 7.

Adam Ren (xWF)

Done

Line 67, Patchset 2 (Latest): DLOG(ERROR) << __func__ << "mesh_id=" << id
David Li . resolved

Did you mean to keep this?

Adam Ren (xWF)

Thanks, I have removed it.

File third_party/blink/renderer/modules/xr/xr_mesh_manager.cc
Line 53, Patchset 2 (Latest): std::vector<device::MeshId> meshes_to_remove;
David Li . resolved
Adam Ren (xWF)

Thanks, the code now uses erase_if()

Open in Gerrit

Related details

Attention is currently required from:
  • Alex Russell
  • Alexander Cooper
  • Daniel Cheng
  • David Li
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: If83c6b643843fb4f23c8695d2c275cfa4b2b9ca9
    Gerrit-Change-Number: 7579915
    Gerrit-PatchSet: 2
    Gerrit-Owner: Adam Ren (xWF) <ada...@google.com>
    Gerrit-Reviewer: Alex Russell <sligh...@chromium.org>
    Gerrit-Reviewer: Alexander Cooper <alco...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
    Gerrit-CC: David Li <dav...@google.com>
    Gerrit-CC: Kentaro Hara <har...@chromium.org>
    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
    Gerrit-CC: gwsq
    Gerrit-Attention: David Li <dav...@google.com>
    Gerrit-Attention: Alexander Cooper <alco...@chromium.org>
    Gerrit-Attention: Alex Russell <sligh...@chromium.org>
    Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
    Gerrit-Comment-Date: Thu, 19 Feb 2026 01:24:52 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    David Li (Gerrit)

    unread,
    Mar 2, 2026, 4:54:28 PM (10 days ago) Mar 2
    to Adam Ren (xWF), Brandon Jones, Code Review Nudger, Chromium IPC Reviews, Daniel Cheng, Alexander Cooper, Alex Russell, Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
    Attention needed from Adam Ren (xWF), Alex Russell, Alexander Cooper, Brandon Jones and Daniel Cheng

    David Li added 2 comments

    File third_party/blink/renderer/modules/xr/xr_mesh.cc
    Line 34, Patchset 4 (Latest):String SemanticLabelToString(
    David Li . unresolved

    This is nearly identical to the one in third_party/blink/renderer/modules/xr/xr_plane.cc.
    Maybe it makes sense to consolidate it in third_party/blink/renderer/modules/xr/xr_utils.h?

    Line 34, Patchset 4 (Latest):String SemanticLabelToString(
    David Li . unresolved

    Fyi: Gemini says it might be better to use AtomicString here.
    I don't work on chrome so no idea if that's right.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Adam Ren (xWF)
    • Alex Russell
    • Alexander Cooper
    • Brandon Jones
    • Daniel Cheng
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: If83c6b643843fb4f23c8695d2c275cfa4b2b9ca9
      Gerrit-Change-Number: 7579915
      Gerrit-PatchSet: 4
      Gerrit-Owner: Adam Ren (xWF) <ada...@google.com>
      Gerrit-Reviewer: Alex Russell <sligh...@chromium.org>
      Gerrit-Reviewer: Alexander Cooper <alco...@chromium.org>
      Gerrit-Reviewer: Brandon Jones <baj...@chromium.org>
      Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
      Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: David Li <dav...@google.com>
      Gerrit-CC: Kentaro Hara <har...@chromium.org>
      Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Adam Ren (xWF) <ada...@google.com>
      Gerrit-Attention: Brandon Jones <baj...@chromium.org>
      Gerrit-Attention: Alexander Cooper <alco...@chromium.org>
      Gerrit-Attention: Alex Russell <sligh...@chromium.org>
      Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
      Gerrit-Comment-Date: Mon, 02 Mar 2026 21:54:20 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Brandon Jones (Gerrit)

      unread,
      Mar 2, 2026, 7:25:27 PM (10 days ago) Mar 2
      to Adam Ren (xWF), Code Review Nudger, Chromium IPC Reviews, Daniel Cheng, Alexander Cooper, Alex Russell, David Li, Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
      Attention needed from Adam Ren (xWF), Alex Russell, Alexander Cooper, Daniel Cheng and David Li

      Brandon Jones added 7 comments

      Patchset-level comments
      File-level comment, Patchset 4 (Latest):
      Brandon Jones . resolved

      Overall looking good! A couple of minor comments, but I feel like this is close.

      File device/vr/public/mojom/vr_service.mojom
      Line 568, Patchset 4 (Latest): Pose? mojo_from_mesh;
      Brandon Jones . unresolved

      Not a blocker, but I have concerns that the pose might update much more frequently than the vertices/indices of the mesh. (We see that other tracked objects, such as anchors, often update once per frame.) I worry that with this structure we may end up pushing several Kb of vertex/index data over the mojo channel each frame to keep up with pose changes.

      We can probably land this as-is, but it would be good to verify frequency against real hardware (ideally from multiple different runtimes.) If we do see signs that the pose changes more often than the mesh, it would be good to try and restructure this so that the pose can be updates independently.

      File third_party/blink/renderer/modules/xr/vr_service_type_converters.h
      Line 13, Patchset 4 (Latest):#include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h"
      Brandon Jones . unresolved

      Why was this added here?

      File third_party/blink/renderer/modules/xr/vr_service_type_converters.cc
      Line 7, Patchset 4 (Latest):#include "base/numerics/safe_conversions.h"
      Brandon Jones . unresolved

      Same question, why is this include necessary now?

      File third_party/blink/renderer/modules/xr/xr_mesh.cc
      Line 34, Patchset 4 (Latest):String SemanticLabelToString(
      David Li . unresolved

      This is nearly identical to the one in third_party/blink/renderer/modules/xr/xr_plane.cc.
      Maybe it makes sense to consolidate it in third_party/blink/renderer/modules/xr/xr_utils.h?

      Brandon Jones

      Yes, that would be a good idea.

      Line 34, Patchset 4 (Latest):String SemanticLabelToString(
      David Li . resolved

      Fyi: Gemini says it might be better to use AtomicString here.
      I don't work on chrome so no idea if that's right.

      Brandon Jones

      I'm not sure AtomicString would be appropriate here? And as you mentioned, it's almost identical to the existing one. No point in breaking from the existing code IMO.

      Line 51, Patchset 4 (Latest): default:
      Brandon Jones . unresolved

      I'd actually prefer to leave the default off. That was developers who add new semantic labels to the mojo file will get a compiler warning indicating that they need to handle it here.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Adam Ren (xWF)
      • Alex Russell
      • Alexander Cooper
      • Daniel Cheng
      • David Li
      Gerrit-Attention: David Li <dav...@google.com>
      Gerrit-Attention: Adam Ren (xWF) <ada...@google.com>
      Gerrit-Attention: Alexander Cooper <alco...@chromium.org>
      Gerrit-Attention: Alex Russell <sligh...@chromium.org>
      Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
      Gerrit-Comment-Date: Tue, 03 Mar 2026 00:25:20 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: David Li <dav...@google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Adam Ren (xWF) (Gerrit)

      unread,
      Mar 3, 2026, 1:26:22 AM (10 days ago) Mar 3
      to Brandon Jones, Code Review Nudger, Chromium IPC Reviews, Daniel Cheng, Alexander Cooper, Alex Russell, David Li, Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
      Attention needed from Alex Russell, Alexander Cooper, Brandon Jones, Daniel Cheng and David Li

      Adam Ren (xWF) added 5 comments

      File device/vr/public/mojom/vr_service.mojom
      Line 568, Patchset 4: Pose? mojo_from_mesh;
      Brandon Jones . resolved

      Not a blocker, but I have concerns that the pose might update much more frequently than the vertices/indices of the mesh. (We see that other tracked objects, such as anchors, often update once per frame.) I worry that with this structure we may end up pushing several Kb of vertex/index data over the mojo channel each frame to keep up with pose changes.

      We can probably land this as-is, but it would be good to verify frequency against real hardware (ideally from multiple different runtimes.) If we do see signs that the pose changes more often than the mesh, it would be good to try and restructure this so that the pose can be updates independently.

      Adam Ren (xWF)

      Thanks for the detailed feedback, Brandon.

      Anchors (XRAnchorData) are just a pose, but planes and meshes both bundle pose and geometry together, because the vertices are expressed in the object's local coordinate space defined by the pose. Separating them would require the consumer to carefully match which geometry version goes with which pose. And it can add another layer of complexity.

      We do have incremental updates as a guard. Vertices and indices are only sent over Mojo when the runtime reports a change via lastUpdatedTime. Please check the CR 7579917: Implement Android OpenXR mesh manager with incremental streaming.

      else if (cache_it->second.last_updated_time != state.lastUpdatedTime) {
      needs_update = true;
      }

      So if a submesh's pose and geometry are both stable, nothing is sent. Given this behavior, I think we can keep the Mojo structure as-is for now. I'll note your suggestion as a potential optimization in the task backlog for future investigation.

      File third_party/blink/renderer/modules/xr/vr_service_type_converters.h
      Line 13, Patchset 4:#include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h"
      Brandon Jones . resolved

      Why was this added here?

      Adam Ren (xWF)

      Thanks. It has been removed

      File third_party/blink/renderer/modules/xr/vr_service_type_converters.cc
      Line 7, Patchset 4:#include "base/numerics/safe_conversions.h"
      Brandon Jones . resolved

      Same question, why is this include necessary now?

      Adam Ren (xWF)

      Done

      File third_party/blink/renderer/modules/xr/xr_mesh.cc
      Line 34, Patchset 4:String SemanticLabelToString(
      David Li . resolved

      This is nearly identical to the one in third_party/blink/renderer/modules/xr/xr_plane.cc.


      Maybe it makes sense to consolidate it in third_party/blink/renderer/modules/xr/xr_utils.h?

      Brandon Jones

      Yes, that would be a good idea.

      Adam Ren (xWF)

      Thanks, it has been moved to xr_utils.h

      Line 51, Patchset 4: default:
      Brandon Jones . resolved

      I'd actually prefer to leave the default off. That was developers who add new semantic labels to the mojo file will get a compiler warning indicating that they need to handle it here.

      Adam Ren (xWF)

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Alex Russell
      • Alexander Cooper
      • Brandon Jones
      • Daniel Cheng
      • David Li
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not satisfiedCode-Owners
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: chromium/src
        Gerrit-Branch: main
        Gerrit-Change-Id: If83c6b643843fb4f23c8695d2c275cfa4b2b9ca9
        Gerrit-Change-Number: 7579915
        Gerrit-PatchSet: 5
        Gerrit-Owner: Adam Ren (xWF) <ada...@google.com>
        Gerrit-Reviewer: Alex Russell <sligh...@chromium.org>
        Gerrit-Reviewer: Alexander Cooper <alco...@chromium.org>
        Gerrit-Reviewer: Brandon Jones <baj...@chromium.org>
        Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
        Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
        Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
        Gerrit-CC: David Li <dav...@google.com>
        Gerrit-CC: Kentaro Hara <har...@chromium.org>
        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
        Gerrit-CC: gwsq
        Gerrit-Attention: David Li <dav...@google.com>
        Gerrit-Attention: Brandon Jones <baj...@chromium.org>
        Gerrit-Attention: Alexander Cooper <alco...@chromium.org>
        Gerrit-Attention: Alex Russell <sligh...@chromium.org>
        Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
        Gerrit-Comment-Date: Tue, 03 Mar 2026 06:26:16 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: David Li <dav...@google.com>
        Comment-In-Reply-To: Brandon Jones <baj...@chromium.org>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Brandon Jones (Gerrit)

        unread,
        Mar 3, 2026, 3:47:17 PM (9 days ago) Mar 3
        to Adam Ren (xWF), Code Review Nudger, Chromium IPC Reviews, Daniel Cheng, Alexander Cooper, Alex Russell, David Li, Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
        Attention needed from Adam Ren (xWF), Alex Russell, Alexander Cooper, Daniel Cheng and David Li

        Brandon Jones added 2 comments

        File device/vr/public/mojom/vr_service.mojom
        Line 568, Patchset 4: Pose? mojo_from_mesh;
        Brandon Jones . resolved

        Not a blocker, but I have concerns that the pose might update much more frequently than the vertices/indices of the mesh. (We see that other tracked objects, such as anchors, often update once per frame.) I worry that with this structure we may end up pushing several Kb of vertex/index data over the mojo channel each frame to keep up with pose changes.

        We can probably land this as-is, but it would be good to verify frequency against real hardware (ideally from multiple different runtimes.) If we do see signs that the pose changes more often than the mesh, it would be good to try and restructure this so that the pose can be updates independently.

        Adam Ren (xWF)

        Thanks for the detailed feedback, Brandon.

        Anchors (XRAnchorData) are just a pose, but planes and meshes both bundle pose and geometry together, because the vertices are expressed in the object's local coordinate space defined by the pose. Separating them would require the consumer to carefully match which geometry version goes with which pose. And it can add another layer of complexity.

        We do have incremental updates as a guard. Vertices and indices are only sent over Mojo when the runtime reports a change via lastUpdatedTime. Please check the CR 7579917: Implement Android OpenXR mesh manager with incremental streaming.

        else if (cache_it->second.last_updated_time != state.lastUpdatedTime) {
        needs_update = true;
        }

        So if a submesh's pose and geometry are both stable, nothing is sent. Given this behavior, I think we can keep the Mojo structure as-is for now. I'll note your suggestion as a potential optimization in the task backlog for future investigation.

        Brandon Jones

        I'm not convinced that there is a tight pairing of the vertices and pose that you suggest. While it's true that the vertices should be expressed in the local coordinate space of the submesh pose, that's also the case for almost any 3D object that the page will be displaying. Placement in space is typically done by transforming the vertices in a shader with a matrix, either defined by the page or created from an XRPose, and those transforms are usually independent of changes to the vertex data itself.

        In any case, the OpenXR docs are not very clear on what is updated when, and I'm happy to follow up myself to clarify the issue. Until then this can land as is.

        File third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom
        Line 5111, Patchset 5 (Latest):// LINT.ThenChange(//tools/metrics/histograms/metadata/blink/enums.xml:FeatureObserver)
        Brandon Jones . unresolved

        Please fix this ERROR reported by If This Then That: Changes in the preceding block may need to be reflected in these files: /tools/m...

        Changes in the preceding block may need to be reflected in these files: /tools/metrics/histograms/metadata/blink/enums.xml If this does not apply, add 'NO_IFTTT=some reason...' to your commit message

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Adam Ren (xWF)
        • Alex Russell
        • Alexander Cooper
        • Daniel Cheng
        • David Li
        Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: If83c6b643843fb4f23c8695d2c275cfa4b2b9ca9
          Gerrit-Change-Number: 7579915
          Gerrit-PatchSet: 5
          Gerrit-Owner: Adam Ren (xWF) <ada...@google.com>
          Gerrit-Reviewer: Alex Russell <sligh...@chromium.org>
          Gerrit-Reviewer: Alexander Cooper <alco...@chromium.org>
          Gerrit-Reviewer: Brandon Jones <baj...@chromium.org>
          Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
          Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
          Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
          Gerrit-CC: David Li <dav...@google.com>
          Gerrit-CC: Kentaro Hara <har...@chromium.org>
          Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
          Gerrit-CC: gwsq
          Gerrit-Attention: David Li <dav...@google.com>
          Gerrit-Attention: Adam Ren (xWF) <ada...@google.com>
          Gerrit-Attention: Alexander Cooper <alco...@chromium.org>
          Gerrit-Attention: Alex Russell <sligh...@chromium.org>
          Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
          Gerrit-Comment-Date: Tue, 03 Mar 2026 20:47:08 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Adam Ren (xWF) <ada...@google.com>
          Comment-In-Reply-To: Brandon Jones <baj...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Alexander Cooper (Gerrit)

          unread,
          Mar 10, 2026, 2:24:27 PM (2 days ago) Mar 10
          to Adam Ren (xWF), Brandon Jones, Code Review Nudger, Chromium IPC Reviews, Daniel Cheng, Alex Russell, David Li, Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
          Attention needed from Adam Ren (xWF), Alex Russell, Daniel Cheng and David Li

          Alexander Cooper added 3 comments

          File third_party/blink/renderer/modules/xr/xr_mesh.h
          Line 55, Patchset 5 (Latest): // Mesh objects are not considered stationary since their pose may vary
          // dramatically from frame to frame.
          Alexander Cooper . unresolved

          I think this is changed based on one of the comments I saw go by?

          File third_party/blink/renderer/platform/runtime_enabled_features.json5
          Line 6195, Patchset 5 (Latest): origin_trial_feature_name: "WebXRMeshDetection",
          Alexander Cooper . unresolved

          I don't think this is needed

          Line 6198, Patchset 5 (Latest): base_feature: "none",
          Alexander Cooper . unresolved

          If we leave this off it'll autogenerate a feature for us that we can just check and things are a bit simplified. See WebXrVisibilityMask for more. Otherwise, a future change will need to tie whatever feature is made to this feature if we want to control the state of if this is queried in the //device/ code.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Adam Ren (xWF)
          • Alex Russell
          • Daniel Cheng
          • David Li
          Gerrit-Attention: Alex Russell <sligh...@chromium.org>
          Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
          Gerrit-Comment-Date: Tue, 10 Mar 2026 18:24:18 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Adam Ren (xWF) (Gerrit)

          unread,
          Mar 11, 2026, 2:29:57 AM (yesterday) Mar 11
          to Brandon Jones, Code Review Nudger, Chromium IPC Reviews, Daniel Cheng, Alexander Cooper, Alex Russell, David Li, Raphael Kubo da Costa, Kentaro Hara, AyeAye, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
          Attention needed from Alex Russell, Alexander Cooper, Daniel Cheng and David Li

          Adam Ren (xWF) added 3 comments

          File third_party/blink/renderer/modules/xr/xr_mesh.h
          Line 55, Patchset 5: // Mesh objects are not considered stationary since their pose may vary

          // dramatically from frame to frame.
          Alexander Cooper . unresolved

          I think this is changed based on one of the comments I saw go by?

          Adam Ren (xWF)

          This wasn’t added in response to a previous comment. — I don’t see one in the resolved comments list of CL/7508029. This design follows the same pattern as XRPlane: both planes and meshes can have poses that change significantly between frames (plane boundaries and mesh geometry can update), so I think we should have both return false from IsStationary().

          File third_party/blink/renderer/platform/runtime_enabled_features.json5
          Line 6195, Patchset 5: origin_trial_feature_name: "WebXRMeshDetection",
          Alexander Cooper . resolved

          I don't think this is needed

          Adam Ren (xWF)

          Done

          Line 6198, Patchset 5: base_feature: "none",
          Alexander Cooper . unresolved

          If we leave this off it'll autogenerate a feature for us that we can just check and things are a bit simplified. See WebXrVisibilityMask for more. Otherwise, a future change will need to tie whatever feature is made to this feature if we want to control the state of if this is queried in the //device/ code.

          Adam Ren (xWF)

          Sure. base_feature:"none" has been removed. And I added a flag: flag_descriptions::kWebXrMeshDetectionName for mesh detection.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Alex Russell
          • Alexander Cooper
          • Daniel Cheng
          • David Li
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: If83c6b643843fb4f23c8695d2c275cfa4b2b9ca9
          Gerrit-Change-Number: 7579915
          Gerrit-PatchSet: 6
          Gerrit-Owner: Adam Ren (xWF) <ada...@google.com>
          Gerrit-Reviewer: Alex Russell <sligh...@chromium.org>
          Gerrit-Reviewer: Alexander Cooper <alco...@chromium.org>
          Gerrit-Reviewer: Brandon Jones <baj...@chromium.org>
          Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
          Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
          Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
          Gerrit-CC: David Li <dav...@google.com>
          Gerrit-CC: Kentaro Hara <har...@chromium.org>
          Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
          Gerrit-CC: gwsq
          Gerrit-Attention: David Li <dav...@google.com>
          Gerrit-Attention: Alexander Cooper <alco...@chromium.org>
          Gerrit-Attention: Alex Russell <sligh...@chromium.org>
          Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
          Gerrit-Comment-Date: Wed, 11 Mar 2026 06:29:47 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Alexander Cooper <alco...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Adam Ren (xWF) (Gerrit)

          unread,
          Mar 11, 2026, 3:46:34 AM (yesterday) Mar 11
          to Brandon Jones, Code Review Nudger, Chromium IPC Reviews, Daniel Cheng, Alexander Cooper, Alex Russell, David Li, Raphael Kubo da Costa, Kentaro Hara, AyeAye, asvitki...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
          Attention needed from Alex Russell, Alexander Cooper, Daniel Cheng and David Li

          Adam Ren (xWF) added 1 comment

          File third_party/blink/renderer/platform/runtime_enabled_features.json5
          Line 6198, Patchset 5: base_feature: "none",
          Alexander Cooper . resolved

          If we leave this off it'll autogenerate a feature for us that we can just check and things are a bit simplified. See WebXrVisibilityMask for more. Otherwise, a future change will need to tie whatever feature is made to this feature if we want to control the state of if this is queried in the //device/ code.

          Adam Ren (xWF)

          Sure. base_feature:"none" has been removed. And I added a flag: flag_descriptions::kWebXrMeshDetectionName for mesh detection.

          Adam Ren (xWF)

          Done

          Gerrit-Comment-Date: Wed, 11 Mar 2026 07:46:22 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Adam Ren (xWF) <ada...@google.com>
          Comment-In-Reply-To: Alexander Cooper <alco...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Adam Ren (xWF) (Gerrit)

          unread,
          Mar 11, 2026, 3:48:21 AM (yesterday) Mar 11
          to Brandon Jones, Code Review Nudger, Chromium IPC Reviews, Daniel Cheng, Alexander Cooper, Alex Russell, David Li, Raphael Kubo da Costa, Kentaro Hara, AyeAye, asvitki...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
          Attention needed from Alex Russell, Alexander Cooper, Brandon Jones, Daniel Cheng and David Li

          Adam Ren (xWF) added 1 comment

          File third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom
          Line 5111, Patchset 5:// LINT.ThenChange(//tools/metrics/histograms/metadata/blink/enums.xml:FeatureObserver)
          Brandon Jones . unresolved

          Please fix this ERROR reported by If This Then That: Changes in the preceding block may need to be reflected in these files: /tools/m...

          Changes in the preceding block may need to be reflected in these files: /tools/metrics/histograms/metadata/blink/enums.xml If this does not apply, add 'NO_IFTTT=some reason...' to your commit message

          Adam Ren (xWF)

          Will modify this after all CLs have LGTM and rebasing to the mainline.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Alex Russell
          • Alexander Cooper
          • Brandon Jones
          • Daniel Cheng
          • David Li
          Gerrit-Attention: Brandon Jones <baj...@chromium.org>
          Gerrit-Attention: Alexander Cooper <alco...@chromium.org>
          Gerrit-Attention: Alex Russell <sligh...@chromium.org>
          Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
          Gerrit-Comment-Date: Wed, 11 Mar 2026 07:48:12 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Brandon Jones <baj...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Alexander Cooper (Gerrit)

          unread,
          4:39 PM (3 hours ago) 4:39 PM
          to Adam Ren (xWF), Brandon Jones, Code Review Nudger, Chromium IPC Reviews, Daniel Cheng, Alex Russell, David Li, Raphael Kubo da Costa, Kentaro Hara, AyeAye, asvitki...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, blink-revie...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, feature-v...@chromium.org
          Attention needed from Adam Ren (xWF), Alex Russell, Brandon Jones, Daniel Cheng and David Li

          Alexander Cooper added 3 comments

          File third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom
          Line 5111, Patchset 5:// LINT.ThenChange(//tools/metrics/histograms/metadata/blink/enums.xml:FeatureObserver)
          Brandon Jones . unresolved

          Please fix this ERROR reported by If This Then That: Changes in the preceding block may need to be reflected in these files: /tools/m...

          Changes in the preceding block may need to be reflected in these files: /tools/metrics/histograms/metadata/blink/enums.xml If this does not apply, add 'NO_IFTTT=some reason...' to your commit message

          Adam Ren (xWF)

          Will modify this after all CLs have LGTM and rebasing to the mainline.

          Alexander Cooper

          This is the first CL; so you could fix and merge it now and then merge the others as appropriate.

          File third_party/blink/renderer/modules/xr/xr_mesh.h
          Line 55, Patchset 5: // Mesh objects are not considered stationary since their pose may vary
          // dramatically from frame to frame.
          Alexander Cooper . unresolved

          I think this is changed based on one of the comments I saw go by?

          Adam Ren (xWF)

          This wasn’t added in response to a previous comment. — I don’t see one in the resolved comments list of CL/7508029. This design follows the same pattern as XRPlane: both planes and meshes can have poses that change significantly between frames (plane boundaries and mesh geometry can update), so I think we should have both return false from IsStationary().

          Alexander Cooper

          I could've sworn there was feedback from Salar somewhere that these are mostly stable, but maybe that's a runtime implementaion detail as well

          File third_party/blink/renderer/platform/runtime_enabled_features.json5
          Line 6195, Patchset 5: origin_trial_feature_name: "WebXRMeshDetection",
          Alexander Cooper . unresolved

          I don't think this is needed

          Adam Ren (xWF)

          Done

          Alexander Cooper

          Still here?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Adam Ren (xWF)
          • Alex Russell
          Gerrit-Attention: Adam Ren (xWF) <ada...@google.com>
          Gerrit-Attention: Brandon Jones <baj...@chromium.org>
          Gerrit-Attention: Alex Russell <sligh...@chromium.org>
          Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
          Gerrit-Comment-Date: Thu, 12 Mar 2026 20:39:12 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Adam Ren (xWF) <ada...@google.com>
          Comment-In-Reply-To: Brandon Jones <baj...@chromium.org>
          Comment-In-Reply-To: Alexander Cooper <alco...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy
          Reply all
          Reply to author
          Forward
          0 new messages