Commit Graph

135 Commits

Author SHA1 Message Date
Daosheng Mu
f76819b009 Bug 1502527 - Keeping VR managers alive even though no focused VR windows. r=kip
Differential Revision: https://phabricator.services.mozilla.com/D9964
2018-10-26 23:17:52 +00:00
Daosheng Mu
d6e1fe4ecf Bug 1501869 - Part 1: Refine the mechanism for VR tasks. r=kip
Differential Revision: https://phabricator.services.mozilla.com/D9879
2018-10-28 22:47:58 +00:00
Cosmin Sabou
650e904454 Backed out 2 changesets (bug 1501869) for causing wpt failures on webvr-enabled-by-feature-policy-attribute-redirect-on-load
Backed out changeset 56896b0e10d3 (bug 1501869)
Backed out changeset cdb87cbfe882 (bug 1501869)
2018-10-27 00:51:10 +03:00
Daosheng Mu
5f77f580b6 Bug 1501869 - Part 1: Refine the mechanism for VR tasks. r=kip
Differential Revision: https://phabricator.services.mozilla.com/D9879
2018-10-26 17:23:13 +00:00
Kearwood "Kip" Gilbert
f8235b7f8b Bug 1501455 - Remove gfx/vr/gfxVROculus.cpp and gfx/vr/gfxVROpenVR.cpp r=daoshengmu
Now that the VRService thread is enabled by default, we
can remove these old files.

The OpenVR 3rd party code has been moved from gfx/vr/openvr
to gfx/vr/service/openvr to be closer to the OpenVRSession
implementation.

The Oculus header (ovr_capi_dynamic.h) has been moved from
gfx/vr/ovr_capi_dynamic.h to gfx/vr/service/oculus to be
closer to the OculusSession implementation.

Differential Revision: https://phabricator.services.mozilla.com/D9600
2018-10-24 22:22:41 +00:00
Kearwood "Kip" Gilbert
f71087c330 Bug 1466700 - Refactor gfxVROculus.cpp to use gfxVRExternal interface, r=daoshengmu
Tags: #secure-revision

Bug #: 1466700

Differential Revision: https://phabricator.services.mozilla.com/D8177
2018-07-13 17:16:35 -07:00
Daniel Varga
fd6aacccc0 Backed out changeset f536c1abf26e (bug 1466700) for causing build bustage at /build/build/src/gfx/vr/service/OculusSession.cpp 2018-10-12 22:29:20 +03:00
Kearwood "Kip" Gilbert
0325f525fc Bug 1466700 - Refactor gfxVROculus.cpp to use gfxVRExternal interface, r=daoshengmu
Tags: #secure-revision

Bug #: 1466700

Differential Revision: https://phabricator.services.mozilla.com/D8177
2018-07-13 17:16:35 -07:00
Jan Beich
3fa7cbbbde Bug 1497379 - Don't disable OSVR along with OpenVR on BSDs. r=kip 2018-10-08 22:41:00 -04:00
Kearwood Gilbert
be1be3646f Bug 1494556 - Remove VRListenerThread r=daoshengmu
We are refactoring much of the code in gfx/vr, moving
most of the code that runs in the VRListenerThread into
it's own process.  The remaining code will be non-blocking
once this refactoring is complete.

In order to resolve some shutdown crashes, it is simpler
to remove the VRListenerThread and the related code
starting and stopping this thread.  If this is done
prior to completion of the refactoring for Bug 1473399
(Enable VRService thread by default), there would be a
regression in responsiveness during detection of VR
hardware due to blocking API calls moving off the thread.

Differential Revision: https://phabricator.services.mozilla.com/D7227
2018-10-02 21:17:05 +00:00
Kearwood Gilbert
9942502629 Bug 1466701 - Refactor gfxVROSVR.cpp to use gfxVRExternal interface r=daoshengmu
Differential Revision: https://phabricator.services.mozilla.com/D7352
2018-10-02 00:24:40 +00:00
Kearwood "Kip" Gilbert
b599a4663f Bug 1494490 - Early exit VRManager::RunTasks when not on the VR Listener thread r=daoshengmu
During shutdown, VRManager::RunTasks may be run outside
of the VR Listener thread due to residual nsTimer events.
This results in intermittent assertions during shutdown
when the assert is hit.
We do not need to run these periodic tasks during shutdown
so we can simply early-exit here.

Differential Revision: https://phabricator.services.mozilla.com/D7022
2018-09-27 05:20:53 +00:00
Kearwood "Kip" Gilbert
e92974170c Bug 1473397 - Implement haptic feedback support for gfxVRExternal and OpenVRSession r=daoshengmu
- Implemented 1ms, 10ms, and 100ms VR tasks, dispatched from
  VRManager
- Removed Android-specific code that compensated for
  tasks that did not run when the...

...compositor was paused.

Differential Revision: https://phabricator.services.mozilla.com/D3378
2018-09-25 22:56:10 +00:00
Daosheng Mu
1376baa65d Bug 1485388 - Checking VRGPUChild is created before asking stop VRService. r=kip
MozReview-Commit-ID: 8NM2bcmqVAa

Differential Revision: https://phabricator.services.mozilla.com/D4054
2018-08-27 20:51:16 +00:00
Kearwood Gilbert
6035261a00 Bug 1481327 - Part 1: Launch VR service in VR process., r=kip,r=mccr8 2018-08-20 14:58:28 -07:00
Daosheng Mu
0923d038e1 Bug 1430038 - Part 2: launch VR process and communicate with GPU process; r=kip, jimm
Summary: MozReview-Commit-ID: IQZVIYVSCxe

Tags: #secure-revision

Differential Revision: https://phabricator.services.mozilla.com/D2877

MozReview-Commit-ID: 4sT6fqk7MpT
2018-08-07 11:20:34 -07:00
Kearwood Gilbert
6dee49ac53 Bug 1476797 - Indicate VR session activity indepenently of layer presence r=daoshengmu
MozReview-Commit-ID: 4F0vclSj5gB

Differential Revision: https://phabricator.services.mozilla.com/D2451
2018-07-31 01:41:25 +00:00
Jan Beich
cc0388f973 Bug 1473881 - Unbreak build on Tier3 after bug 1466699. r=kip
MozReview-Commit-ID: 7G9bLplXoHB
2018-07-06 13:38:01 +00:00
Kearwood "Kip" Gilbert
d2b5d81e85 Bug 1466699 - Implement VRService thread r=daoshengmu
- Refactored gfxVROpenVR to use gfxVRExternal interface from the
  VR Service.  Existing gfxVROpenVR left in place (for now) to
  allow VR service to be enabled or disabled by pref.
- The VR service, containing gfxVROpenVR, is to run in-process within
  its own thread first, then to be later moved to its own process.
- Fixed periodic immersive mode flicker that occured due to HMD pose and
  HMD state being separately sampled from the Shmem.  It was possible
  to advance a frame without also getting an updated pose if a dirty
  copy of the shmem was detected.
MozReview-Commit-ID: IvpJErmi5kF
2018-05-08 11:31:28 -07:00
Kearwood "Kip" Gilbert
1d1cbd6396 Bug 1469967 - Implement immersive mode for gfxVRExternal r=rbarker
- The VR External interface/shmem and gfxVRExternal are
  updated to enable entering VR, exiting VR, and submitting
  frames.
- You can now construct gfxVRExternal using a pointer to
  the VR External API shmem, if it is created elsewhere.

MozReview-Commit-ID: LZuoLvoEmKO
2018-05-08 11:31:28 -07:00
Randall Barker
dc0948c59d Bug 1465816 - Add initial code needed to support gfxVRExternal on android r=kip,jchen
MozReview-Commit-ID: 9rXXqIvyvhp
2018-06-05 18:33:01 -07:00
Cosmin Sabou
3502b40ddf Backed out changeset 66a3146a7fce (bug 1465816) for frequent reftest failures on draw_rect.html. CLOSED TREE 2018-06-06 00:28:56 +03:00
Randall Barker
6d87d8a93f Bug 1465816 - Add initial code needed to support gfxVRExternal on android r=kip,jchen
MozReview-Commit-ID: 9rXXqIvyvhp
2018-06-05 12:34:15 -07:00
Kearwood Gilbert
6b55caf97c Bug 1436791 - Implement gfxVRExternal,r=rbarker
- gfxVRExternal Enables other processes to present
  real or simulated VR hardware to Firefox.
- This functionality is disabled by default, under
  dom.vr.external.enabled.
- VRDisplayInfo, VRControllerInfo, and associated
  structs have been restructured to ensure internal
  state is not exposed via shmem interface.
- Some refactoring to convert structs to
  POD types, enabling them to be located
  in shmem and be memcpy'd.
- Work needed before unpreffing marked
  with "TODO" comments.
MozReview-Commit-ID: FbsusbxuoQ8
2018-03-13 17:09:54 -07:00
Kearwood Gilbert
d5ec4959fc Bug 1407423 - Part 3: Update Puppet Device Implementation,r=daoshengmu
- Update prefs to accomodate tests, disabling
  enumeration throttling
- Updated Puppet display and controller implementation
  to act more like the actual devices.
- Updated tests to ensure that they explicitly
  create a VR mock display and don't create duplicate
  mock displays.

MozReview-Commit-ID: 6RPVqekG2je
2017-11-21 14:18:16 -08:00
Kearwood "Kip" Gilbert
99618972f8 Bug 1407423 - Ensure that any time we have loaded the Oculus runtime libary, we are polling ShouldQuit,r=daoshengmu
- Ensure ovr_GetSessionStatus is polled even when a VR presentation
  is not active.
- When we fail to initialize an Oculus Session or detect VR hardware,
  immediately unload the Oculus Library as we can't poll for ShouldQuit
  without a valid Oculus session.
- When we poll ovr_GetSessionStatus, we are now updating the mounted state
  in VRDisplayInfo::mIsMounted.
- Added prefs to control enumeration throttling and timeout to release
  VR hardware when inactive.
- Some refactoring to make frame loop more understandable and less
  brittle.
- When throttling enumeration, we ensure that all other VR apis
  also throttle enumeration so that they don't pick up the same device
  during throttling.
- Some long functions in VRManager have been broken up and
  had their inner-workings documented in more detail.

MozReview-Commit-ID: CEYwwQ9mYd0
2017-10-10 14:42:37 -07:00
Daosheng Mu
017fd08145 Bug 1358247 - Reply VR vibrate promises to the individual channels; r=kip
MozReview-Commit-ID: 4NwYNkwKUMR
2017-11-30 19:37:07 +08:00
Randall Barker
4287a1c535 Bug 1413362 - part 2: Gecko gfx/vr GVR WebVR implementation r=kip,daoshengmu
MozReview-Commit-ID: HWaXhQo0VML
2017-11-07 10:50:14 -08:00
Sebastian Hengst
9050826f34 Backed out 3 changesets (bug 1413362) for causing merge conflicts. r=merge a=merge
Backed out changeset 8b15dfaeecaa (bug 1413362)
Backed out changeset 2d9da0d19d04 (bug 1413362)
Backed out changeset 653c66220a5f (bug 1413362)
2017-11-07 12:41:11 +02:00
Randall Barker
a625d2f810 Bug 1413362 - part 2: Gecko gfx/vr GVR WebVR implementation r=kip,daoshengmu
MozReview-Commit-ID: HWaXhQo0VML
2017-11-06 17:43:28 -08:00
Phil Ringnalda
f0b9b8f868 Backed out 4 changesets (bug 1406327) for crashing other tests, crashing itself, and assertion failures
Backed out changeset 471c710b19b1 (bug 1406327)
Backed out changeset 5890bb3a0d97 (bug 1406327)
Backed out changeset 63c8ee57e38c (bug 1406327)
Backed out changeset 345972733daa (bug 1406327)

MozReview-Commit-ID: IwWx11QSuS4
2017-11-01 21:44:12 -07:00
Daosheng Mu
94a3d0258b Bug 1406327 - Part 4: RefreshVRDisplays needs to be at VRListenerThread; r=kip
MozReview-Commit-ID: KuhPFqMhTDB
2017-11-01 22:15:06 +08:00
Daosheng Mu
572af92d99 Bug 1406327 - Part 2: When loading VR content, launching the VR listener thread; r=kip
MozReview-Commit-ID: IyBzJyDEVdv
2017-10-26 17:28:37 +08:00
Attila Craciun
43f4029dd3 Backed out changeset aa67335856eb (bug 1406327) for failing dom/vr/test/mochitest/test_vrController_displayId.html r=backout on a CLOSED TREE. 2017-11-01 11:15:01 +02:00
Daosheng Mu
a1ba87fe07 Bug 1406327 - Part 2: When loading VR content, launching the VR listener thread; r=kip
MozReview-Commit-ID: IyBzJyDEVdv
2017-10-26 17:28:37 +08:00
Phil Ringnalda
162ba2343d Backed out 3 changesets (bug 1406327) for bustage in tests that run after the VM tests
Backed out changeset 1784a194ced8 (bug 1406327)
Backed out changeset 44cb5451bbde (bug 1406327)
Backed out changeset e1e57d418c14 (bug 1406327)

MozReview-Commit-ID: HUN1rEqAIWf
2017-10-31 22:33:41 -07:00
Daosheng Mu
1ec6106de0 Bug 1406327 - Part 2: When loading VR content, launching the VR listener thread; r=kip
MozReview-Commit-ID: IyBzJyDEVdv
2017-10-26 17:28:37 +08:00
Daniel Holbert
bb0a8b6602 Bug 1412427 part 8: (automated patch) Switch a bunch of C++ files in gfx to use our standard mode lines. r=jrmuizel
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: 77D61xpSmIl
2017-10-27 16:10:06 -07:00
Coroiu Cristina
2d2f8313f4 Backed out changeset b7a07167905c::2932c914e223 (bug 1406327) for failing in dom/vr/test/mochitest/test_vrController_displayId.html r=backout a=backout on a CLOSED TREE
Backed out changeset 2932c914e223 (bug 1406327)
Backed out changeset cfbc6262a064 (bug 1406327)
Backed out changeset b7a07167905c (bug 1406327)
2017-10-30 14:51:52 +02:00
Daosheng Mu
9b3b40c97c Bug 1406327 - Part 2: When loading VR content, launching the VR listener thread; r=kip
MozReview-Commit-ID: IyBzJyDEVdv
2017-10-26 17:28:37 +08:00
Daosheng Mu
0e732e44c0 Bug 1392216 - Part 2: Support VR listener thread in VR; r=kip
MozReview-Commit-ID: 62PZ5opXoZ6
2017-10-05 18:16:16 +08:00
Kearwood "Kip" Gilbert
633a57e221 Bug 1400457 - Isolate VR Rendering from Compositor r=daoshengmu,jgilbert
- WebVR is no longer dependent on PTexture, TextureParent,
  TextureHost, and TextureChild.  It continues to use TextureClient
  for pooling and coordinating locks with other Gecko code.
- PreserveDrawingBuffer now behaving correctly for 2d display mirroring
- Preparation for separating to VR process
MozReview-Commit-ID: 2RGOulCInSu
2017-07-21 17:30:34 -07:00
Kearwood "Kip" Gilbert
96a359a9d0 Bug 1394561 - Ensure WebVR content can catch up when IPC messages are delayed r=daoshengmu,kanru
MozReview-Commit-ID: F4NKtyaNwEo
2017-08-31 16:29:14 -07:00
Chih-Yi Leu
41c9ef7055 Bug 1381378: Refactor - Isolate gamepad index and GamepadServiceType from GamepadChangeEvent; r=daoshengmu
MozReview-Commit-ID: IFjvDsl6vlY
2017-07-17 11:44:39 +08:00
Kearwood "Kip" Gilbert
5f29c26357 Bug 1287944 - Improve interaction with Oculus Home r=daoshengmu
- Now destroying and re-creating Oculus sessions when switching
  between magic window and immersive WebVR (BeginPresent / ExitPresent)
- Now sending flags to Oculus ovr_initilize to specify if Firefox will
  be presenting to the VR display or just using tracking
- Now coordinating oculus session shutdown and restart between the
  VR controllers and the VR display with reference counting.
- Now able to return to Oculus home after using WebVR
- Magic window / non-exclusive sessions no longer take over the VR headset
  causing it to display a message that Firefox.exe is not responding.


MozReview-Commit-ID: EnRsxt6ZSzg
2017-07-04 13:28:27 -07:00
Wes Kocher
8f5e63d2c6 Backed out changeset f9b033c61423 (bug 1287944) for win debug failures in test_child_assertions.js a=backout
MozReview-Commit-ID: Fem34WwTkY6
2017-07-06 17:03:39 -07:00
Kearwood "Kip" Gilbert
7f4fed2105 Bug 1287944 - Improve interaction with Oculus Home r=daoshengmu
- Now destroying and re-creating Oculus sessions when switching
  between magic window and immersive WebVR (BeginPresent / ExitPresent)
- Now sending flags to Oculus ovr_initilize to specify if Firefox will
  be presenting to the VR display or just using tracking
- Now coordinating oculus session shutdown and restart between the
  VR controllers and the VR display with reference counting.
- Now able to return to Oculus home after using WebVR
- Magic window / non-exclusive sessions no longer take over the VR headset
  causing it to display a message that Firefox.exe is not responding.


MozReview-Commit-ID: EnRsxt6ZSzg
2017-07-04 13:28:27 -07:00
Kearwood Gilbert
c0ff059fa1 Bug 1374393 - Build OpenVR on macOS and Linux r=daoshengmu
- OpenVR was previously only being built for Windows builds
  it will now be built additionally on macOS and Linux.

MozReview-Commit-ID: 68ZUNmdybd1
2017-05-31 11:14:55 -07:00
Kearwood Gilbert
a73a762350 Bug 1362213 - Implement chrome-only API to manage VR sessions r=daoshengmu,kanru,smaug
- Added new chrome-only webidl methods to be used by browser UI and WebExtensions
- Implemented bitmasked group visibility for VR sessions to enable switching
  between chrome and regular content presentations.
- Implemented throttling mechanism to avoid runaway, unthrottled render loops
  for VR sessions that are hidden by group visibility bitmasks or due to
  lower level platform VR events, such as during the Oculus
  "Health and Safety Warning".
- Simplified the PVRManager IPC protocol while extending it to support
  VR session groups and later WebVR content performance profiling API's.
- Removed the last WebVR related sync IPC call.


MozReview-Commit-ID: BMEIPyYeEbq
2017-05-08 16:01:36 -07:00
Daosheng Mu
dd4ffeec4b Bug 1343730 - Part 1: Support submitFrame and encode the frame as a base64 image in VRPuppet; r=kip
MozReview-Commit-ID: jHKHSoNo6X
2017-05-23 16:55:30 +08:00