diff options
Diffstat (limited to 'gfx/vr/ipc/PVRManager.ipdl')
-rw-r--r-- | gfx/vr/ipc/PVRManager.ipdl | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/gfx/vr/ipc/PVRManager.ipdl b/gfx/vr/ipc/PVRManager.ipdl new file mode 100644 index 0000000000..73c2a1bb4e --- /dev/null +++ b/gfx/vr/ipc/PVRManager.ipdl @@ -0,0 +1,87 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * vim: sw=2 ts=8 et : + */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +include LayersSurfaces; +include protocol PVRLayer; +include LayersMessages; +include GamepadEventTypes; + +include "VRMessageUtils.h"; +include "VRManagerParent.h"; +include "VRManagerChild.h"; + +using struct mozilla::gfx::VRFieldOfView from "gfxVR.h"; +using struct mozilla::gfx::VRDisplayInfo from "gfxVR.h"; +using struct mozilla::gfx::VRSensorUpdate from "gfxVR.h"; +using struct mozilla::gfx::VRHMDSensorState from "gfxVR.h"; +using struct mozilla::gfx::VRControllerInfo from "gfxVR.h"; +using struct mozilla::gfx::VRSubmitFrameResultInfo from "gfxVR.h"; +using mozilla::gfx::VRDisplayCapabilityFlags from "moz_external_vr.h"; +using mozilla::layers::LayersBackend from "mozilla/layers/LayersTypes.h"; +using mozilla::layers::TextureFlags from "mozilla/layers/CompositorTypes.h"; +using mozilla::dom::GamepadHandle from "mozilla/dom/GamepadHandle.h"; + + +namespace mozilla { +namespace gfx { + +/** + * The PVRManager protocol is used to enable communication of VR display + * enumeration and sensor state between the compositor thread and + * content threads/processes. + */ +[ManualDealloc, NeedsOtherPid, ChildImpl="VRManagerChild", ParentImpl="VRManagerParent"] +sync protocol PVRManager +{ + manages PVRLayer; + +parent: + async PVRLayer(uint32_t aDisplayID, uint32_t aGroup); + + // Detect runtime capabilities. This will return the presense of VR and/or AR + // runtime software, without enumerating or activating any hardware devices. + async DetectRuntimes(); + + // (Re)Enumerate VR Displays. An updated list of VR displays will be returned + // asynchronously to children via UpdateDisplayInfo. + async RefreshDisplays(); + + async SetGroupMask(uint32_t aDisplayID, uint32_t aGroupMask); + async SetHaveEventListener(bool aHaveEventListener); + + async ControllerListenerAdded(); + async ControllerListenerRemoved(); + async VibrateHaptic(GamepadHandle aGamepadHandle, uint32_t aHapticIndex, + double aIntensity, double aDuration, uint32_t aPromiseID); + async StopVibrateHaptic(GamepadHandle aGamepadHandle); + async StartVRNavigation(uint32_t aDeviceID); + async StopVRNavigation(uint32_t aDeviceID, TimeDuration aDuration); + async StartActivity(); + async StopActivity(); + + async RunPuppet(uint64_t[] buffer); + async ResetPuppet(); + +child: + // Notify children of updated VR display enumeration and details. This will + // be sent to all children when the parent receives RefreshDisplays, even + // if no changes have been detected. This ensures that Promises exposed + // through DOM calls are always resolved. + async UpdateDisplayInfo(VRDisplayInfo aDisplayInfo); + + async UpdateRuntimeCapabilities(VRDisplayCapabilityFlags aCapabilities); + + async ReplyGamepadVibrateHaptic(uint32_t aPromiseID); + async NotifyPuppetCommandBufferCompleted(bool aSuccess); + async NotifyPuppetResetComplete(); + + async __delete__(); + +}; + +} // gfx +} // mozilla |