tree: 2f35dcc898f4eed6b4bfaa73ea0e3c1bc9ba5f5f [path history] [tgz]
  1. android/
  2. buildflags/
  3. openxr/
  4. orientation/
  5. public/
  6. test/
  7. util/
  8. windows/
  9. BUILD.gn
  10. create_anchor_request.cc
  11. create_anchor_request.h
  12. DEPS
  13. DIR_METADATA
  14. empty.cc
  15. gl_bindings.h
  16. OWNERS
  17. README.md
  18. vr_device.h
  19. vr_device_base.cc
  20. vr_device_base.h
  21. vr_device_base_unittest.cc
  22. vr_export.h
  23. vr_gl_util.cc
  24. vr_gl_util.h
device/vr/README.md

VR

For a more thorough/high level overview of the entire WebXR stack, please refer to components/webxr

device/vr abstracts WebXR features across multiple platforms. Note that in some instances, necessary extension points or potential layering violations will require the creation of an interface in this directory, and an implementation in components/webxr.

Although the directory is named “vr” both VR and AR features are implemented here. The name is an artifact from the time when it was associated with the now deprecated WebVR API.

When other code in Chrome refers to a device or vr “Runtime” they are usually referring to the implementations in the subfolders here; though it is perhaps better to think of this as Chrome's runtime integration and the actual code that talks to the headset on the platform side as the “Runtime” or “Driver”.

Platform support

Windows and Android are the primary supported platforms, largely because they're the only platforms with significant XR device traction at this point. OpenXR could theoretically provide support on Linux/Mac, but at this time we have not ensured that the code can build nor implemented any necessary loader/other features to enable OpenXr on those platforms.

APIOSSupportsEnabled by Default
ARCoreAndroidARYes
Google Cardboard SDKAndroidVRYes
OpenXRWindowsVRYes*
OpenXRWindowsARNo
OpenXRAndroidVRNo
OpenXRAndroidARNo

Integrations with some APIs (such as AR Core) are partially locaed in chrome/browser/vr due to architectural and historical limitations. In the future those will ideally be migrated to this directory as well.

Full documentation for OpenXr may be found here.

Windows Build setup

On Windows, the device code runs in a sandboxed utility process. The Chrome installers (e.g. mini_installer) and test setup scripts, will ensure that the appropriate permissions (ACLs) are set on the install directory to run in the sandbox. However, if you wish to build and run the code from your local out directory directly, you will need to either disable the sandbox (not recommended as it could lead to an accidental compat issue) or manually set these permissions. The permissions will persist, so the commands need only be run once per out-directory.

To set the appropriate ACLs run:

icacls <chromium out directory> /grant *S-1-15-3-1024-3424233489-972189580-2057154623-747635277-1604371224-316187997-3786583170-1043257646:(OI)(CI)(RX)
icacls <chromium out directory> /grant *S-1-15-3-1024-2302894289-466761758-1166120688-1039016420-2430351297-4240214049-4028510897-3317428798:(OI)(CI)(RX)

Testing

See XR Browser Tests documentation.