diff --git a/app/src/googlevr/cpp/DeviceDelegateGoogleVR.cpp b/app/src/googlevr/cpp/DeviceDelegateGoogleVR.cpp index 047dbaa12f..b7d83ade3a 100644 --- a/app/src/googlevr/cpp/DeviceDelegateGoogleVR.cpp +++ b/app/src/googlevr/cpp/DeviceDelegateGoogleVR.cpp @@ -394,7 +394,8 @@ DeviceDelegateGoogleVR::RegisterImmersiveDisplay(ImmersiveDisplayPtr aDisplay) { } m.immersiveDisplay->SetDeviceName("Daydream"); - m.immersiveDisplay->SetCapabilityFlags(device::Position | device::Orientation | device::Present | device::StageParameters); + m.immersiveDisplay->SetCapabilityFlags(device::Position | device::Orientation | device::Present | device::StageParameters | + device::InlineSession | device::ImmersiveVRSession); m.immersiveDisplay->SetSittingToStandingTransform(vrb::Matrix::Translation(kAverageHeight)); gvr_sizei size = m.GetRecommendedImmersiveModeSize(); m.immersiveDisplay->SetEyeResolution(size.width / 2, size.height); diff --git a/app/src/main/cpp/Device.h b/app/src/main/cpp/Device.h index 71911c02cc..b02d84b898 100644 --- a/app/src/main/cpp/Device.h +++ b/app/src/main/cpp/Device.h @@ -19,6 +19,9 @@ const CapabilityFlags LinearAcceleration = 1u << 6u; const CapabilityFlags StageParameters = 1u << 7u; const CapabilityFlags MountDetection = 1u << 8u; const CapabilityFlags PositionEmulated = 1u << 9u; +const CapabilityFlags InlineSession = 1u << 10u; +const CapabilityFlags ImmersiveVRSession = 1u << 11u; +const CapabilityFlags ImmersiveARSession = 1u << 12u; enum class Eye { Left, Right }; enum class RenderMode { StandAlone, Immersive }; enum class CPULevel { Normal = 0, High }; diff --git a/app/src/main/cpp/ExternalVR.cpp b/app/src/main/cpp/ExternalVR.cpp index 55172c9e8e..0b7f9e0e68 100644 --- a/app/src/main/cpp/ExternalVR.cpp +++ b/app/src/main/cpp/ExternalVR.cpp @@ -254,6 +254,15 @@ ExternalVR::SetCapabilityFlags(const device::CapabilityFlags aFlags) { if (device::PositionEmulated & aFlags) { result |= static_cast(mozilla::gfx::VRDisplayCapabilityFlags::Cap_PositionEmulated); } + if (device::InlineSession & aFlags) { + result |= static_cast(mozilla::gfx::VRDisplayCapabilityFlags::Cap_Inline); + } + if (device::ImmersiveVRSession & aFlags) { + result |= static_cast(mozilla::gfx::VRDisplayCapabilityFlags::Cap_ImmersiveVR); + } + if (device::ImmersiveARSession & aFlags) { + result |= static_cast(mozilla::gfx::VRDisplayCapabilityFlags::Cap_ImmersiveAR); + } //m.deviceCapabilities = aFlags; m.system.displayState.capabilityFlags = static_cast(result); m.system.sensorState.flags = m.system.displayState.capabilityFlags; diff --git a/app/src/noapi/cpp/DeviceDelegateNoAPI.cpp b/app/src/noapi/cpp/DeviceDelegateNoAPI.cpp index e1100983d3..b8f405cfdb 100644 --- a/app/src/noapi/cpp/DeviceDelegateNoAPI.cpp +++ b/app/src/noapi/cpp/DeviceDelegateNoAPI.cpp @@ -94,7 +94,7 @@ struct DeviceDelegateNoAPI::State { display->SetEyeResolution((int32_t)(glWidth / 2), glHeight); display->SetEyeOffset(device::Eye::Left, 0.0f, 0.0f, 0.0f); display->SetEyeOffset(device::Eye::Right, 0.0f, 0.0f, 0.0f); - display->SetCapabilityFlags(device::Position | device::Orientation | device::Present); + display->SetCapabilityFlags(device::Position | device::Orientation | device::Present | device::InlineSession | device::ImmersiveVRSession); } } }; diff --git a/app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp b/app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp index a2ee3f6b5e..3ac49dc444 100644 --- a/app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp +++ b/app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp @@ -1458,7 +1458,8 @@ DeviceDelegateOculusVR::StartFrame() { if (m.immersiveDisplay) { m.immersiveDisplay->SetEyeOffset(device::Eye::Left, -ipd * 0.5f, 0.f, 0.f); m.immersiveDisplay->SetEyeOffset(device::Eye::Right, ipd * 0.5f, 0.f, 0.f); - device::CapabilityFlags caps = device::Orientation | device::Present | device::StageParameters; + device::CapabilityFlags caps = device::Orientation | device::Present | device::StageParameters | + device::InlineSession | device::ImmersiveVRSession; if (m.predictedTracking.Status & VRAPI_TRACKING_STATUS_POSITION_TRACKED) { caps |= device::Position; } else { diff --git a/app/src/svr/cpp/DeviceDelegateSVR.cpp b/app/src/svr/cpp/DeviceDelegateSVR.cpp index 90bf6ca55b..4b3e345dda 100644 --- a/app/src/svr/cpp/DeviceDelegateSVR.cpp +++ b/app/src/svr/cpp/DeviceDelegateSVR.cpp @@ -337,7 +337,8 @@ DeviceDelegateSVR::RegisterImmersiveDisplay(ImmersiveDisplayPtr aDisplay) { } m.immersiveDisplay->SetDeviceName("ODG"); - m.immersiveDisplay->SetCapabilityFlags(device::Position | device::Orientation | device::Present); + m.immersiveDisplay->SetCapabilityFlags(device::Position | device::Orientation | device::Present | + device::InlineSession | device::ImmersiveVRSession); m.immersiveDisplay->SetEyeResolution(m.renderWidth, m.renderHeight); m.immersiveDisplay->CompleteEnumeration(); diff --git a/app/src/wavevr/cpp/DeviceDelegateWaveVR.cpp b/app/src/wavevr/cpp/DeviceDelegateWaveVR.cpp index 77aee3ddfe..ddbbda41b4 100644 --- a/app/src/wavevr/cpp/DeviceDelegateWaveVR.cpp +++ b/app/src/wavevr/cpp/DeviceDelegateWaveVR.cpp @@ -461,7 +461,8 @@ DeviceDelegateWaveVR::RegisterImmersiveDisplay(ImmersiveDisplayPtr aDisplay) { } m.immersiveDisplay->SetDeviceName("Wave"); - device::CapabilityFlags flags = device::Orientation | device::Present | device::StageParameters; + device::CapabilityFlags flags = device::Orientation | device::Present | device::StageParameters | + device::InlineSession | device::ImmersiveVRSession; if (WVR_GetDegreeOfFreedom(WVR_DeviceType_HMD) == WVR_NumDoF_6DoF) { flags |= device::Position;