Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The read-only depthUsage property of an immersive-ar XRSession describes which depth-sensing usage is used.


This property can return the following values:


The depth data is intended to be used on the CPU; see the XRCPUDepthInformation interface.


The depth data is intended to be used on the GPU; see the XRWebGLDepthInformation interface.


To request the desired usage method, you need to specify a usagePreference when requesting a session using XRSystem.requestSession(). Here, the caller is able to handle both CPU- and GPU-optimized usage. The order indicates preference for CPU:

navigator.xr.requestSession("immersive-ar", {
  requiredFeatures: ["depth-sensing"],
  depthSensing: {
    usagePreference: ["cpu-optimized", "gpu-optimized"],
    formatPreference: ["luminance-alpha", "float32"]

To check which usage was selected by the user agent, you can call the depthUsage property:

console.log(session.depthUsage); // either "cpu-optimized" or "gpu-optimized"


WebXR Depth Sensing Module
# dom-xrsession-depthusage

Browser compatibility

BCD tables only load in the browser