Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit cf198c2

Browse files
authored
Add cap flags as needed for WebXR related changes in GeckoView (#2516)
(cherry picked from commit 3621a19)
1 parent d0f8d7a commit cf198c2

File tree

7 files changed

+21
-5
lines changed

7 files changed

+21
-5
lines changed

app/src/googlevr/cpp/DeviceDelegateGoogleVR.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,8 @@ DeviceDelegateGoogleVR::RegisterImmersiveDisplay(ImmersiveDisplayPtr aDisplay) {
394394
}
395395

396396
m.immersiveDisplay->SetDeviceName("Daydream");
397-
m.immersiveDisplay->SetCapabilityFlags(device::Position | device::Orientation | device::Present | device::StageParameters);
397+
m.immersiveDisplay->SetCapabilityFlags(device::Position | device::Orientation | device::Present | device::StageParameters |
398+
device::InlineSession | device::ImmersiveVRSession);
398399
m.immersiveDisplay->SetSittingToStandingTransform(vrb::Matrix::Translation(kAverageHeight));
399400
gvr_sizei size = m.GetRecommendedImmersiveModeSize();
400401
m.immersiveDisplay->SetEyeResolution(size.width / 2, size.height);

app/src/main/cpp/Device.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ const CapabilityFlags LinearAcceleration = 1u << 6u;
1919
const CapabilityFlags StageParameters = 1u << 7u;
2020
const CapabilityFlags MountDetection = 1u << 8u;
2121
const CapabilityFlags PositionEmulated = 1u << 9u;
22+
const CapabilityFlags InlineSession = 1u << 10u;
23+
const CapabilityFlags ImmersiveVRSession = 1u << 11u;
24+
const CapabilityFlags ImmersiveARSession = 1u << 12u;
2225
enum class Eye { Left, Right };
2326
enum class RenderMode { StandAlone, Immersive };
2427
enum class CPULevel { Normal = 0, High };

app/src/main/cpp/ExternalVR.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,15 @@ ExternalVR::SetCapabilityFlags(const device::CapabilityFlags aFlags) {
254254
if (device::PositionEmulated & aFlags) {
255255
result |= static_cast<uint16_t>(mozilla::gfx::VRDisplayCapabilityFlags::Cap_PositionEmulated);
256256
}
257+
if (device::InlineSession & aFlags) {
258+
result |= static_cast<uint16_t>(mozilla::gfx::VRDisplayCapabilityFlags::Cap_Inline);
259+
}
260+
if (device::ImmersiveVRSession & aFlags) {
261+
result |= static_cast<uint16_t>(mozilla::gfx::VRDisplayCapabilityFlags::Cap_ImmersiveVR);
262+
}
263+
if (device::ImmersiveARSession & aFlags) {
264+
result |= static_cast<uint16_t>(mozilla::gfx::VRDisplayCapabilityFlags::Cap_ImmersiveAR);
265+
}
257266
//m.deviceCapabilities = aFlags;
258267
m.system.displayState.capabilityFlags = static_cast<mozilla::gfx::VRDisplayCapabilityFlags>(result);
259268
m.system.sensorState.flags = m.system.displayState.capabilityFlags;

app/src/noapi/cpp/DeviceDelegateNoAPI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ struct DeviceDelegateNoAPI::State {
9494
display->SetEyeResolution((int32_t)(glWidth / 2), glHeight);
9595
display->SetEyeOffset(device::Eye::Left, 0.0f, 0.0f, 0.0f);
9696
display->SetEyeOffset(device::Eye::Right, 0.0f, 0.0f, 0.0f);
97-
display->SetCapabilityFlags(device::Position | device::Orientation | device::Present);
97+
display->SetCapabilityFlags(device::Position | device::Orientation | device::Present | device::InlineSession | device::ImmersiveVRSession);
9898
}
9999
}
100100
};

app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1458,7 +1458,8 @@ DeviceDelegateOculusVR::StartFrame() {
14581458
if (m.immersiveDisplay) {
14591459
m.immersiveDisplay->SetEyeOffset(device::Eye::Left, -ipd * 0.5f, 0.f, 0.f);
14601460
m.immersiveDisplay->SetEyeOffset(device::Eye::Right, ipd * 0.5f, 0.f, 0.f);
1461-
device::CapabilityFlags caps = device::Orientation | device::Present | device::StageParameters;
1461+
device::CapabilityFlags caps = device::Orientation | device::Present | device::StageParameters |
1462+
device::InlineSession | device::ImmersiveVRSession;
14621463
if (m.predictedTracking.Status & VRAPI_TRACKING_STATUS_POSITION_TRACKED) {
14631464
caps |= device::Position;
14641465
} else {

app/src/svr/cpp/DeviceDelegateSVR.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,8 @@ DeviceDelegateSVR::RegisterImmersiveDisplay(ImmersiveDisplayPtr aDisplay) {
337337
}
338338

339339
m.immersiveDisplay->SetDeviceName("ODG");
340-
m.immersiveDisplay->SetCapabilityFlags(device::Position | device::Orientation | device::Present);
340+
m.immersiveDisplay->SetCapabilityFlags(device::Position | device::Orientation | device::Present |
341+
device::InlineSession | device::ImmersiveVRSession);
341342
m.immersiveDisplay->SetEyeResolution(m.renderWidth, m.renderHeight);
342343
m.immersiveDisplay->CompleteEnumeration();
343344

app/src/wavevr/cpp/DeviceDelegateWaveVR.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,8 @@ DeviceDelegateWaveVR::RegisterImmersiveDisplay(ImmersiveDisplayPtr aDisplay) {
461461
}
462462

463463
m.immersiveDisplay->SetDeviceName("Wave");
464-
device::CapabilityFlags flags = device::Orientation | device::Present | device::StageParameters;
464+
device::CapabilityFlags flags = device::Orientation | device::Present | device::StageParameters |
465+
device::InlineSession | device::ImmersiveVRSession;
465466

466467
if (WVR_GetDegreeOfFreedom(WVR_DeviceType_HMD) == WVR_NumDoF_6DoF) {
467468
flags |= device::Position;

0 commit comments

Comments
 (0)