//
// Automatically generated by ipdlc.
// Edit at your own risk
//

#ifndef PGPU_h
#define PGPU_h

#include "mozilla/Attributes.h"
#include "IPCMessageStart.h"
#include "mozilla/RefPtr.h"
#include "nsString.h"
#include "nsTArray.h"
#include "nsTHashtable.h"
#include "mozilla/MozPromise.h"
#include "mozilla/OperatorNewExtensions.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/ipc/ByteBuf.h"
#include "mozilla/ipc/FileDescriptor.h"
#include "mozilla/ipc/IPCForwards.h"
#include "mozilla/ipc/Shmem.h"

// Headers for typedefs
#include "base/process.h"
#include "mozilla/ipc/IPDLStructMember.h"
#include "mozilla/layers/LayersTypes.h"
#include "CrashReporter/CrashReporterInitArgs.h"
#include "mozilla/gfx/GraphicsMessages.h"
#include "mozilla/dom/MemoryReportTypes.h"
#include "mozilla/HangTypes.h"
#include "mozilla/dom/PrefsTypes.h"


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct LayerTreeIdMapping|
//
namespace mozilla {
namespace gfx {
class LayerTreeIdMapping final
{
private:
    typedef ::mozilla::layers::LayersId LayersId;
    typedef ::base::ProcessId ProcessId;

public:
#ifdef __clang__
#  pragma clang diagnostic push
#  if __has_warning("-Wdefaulted-function-deleted")
#    pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
#  endif
#endif
    LayerTreeIdMapping() = default;
#ifdef __clang__
#  pragma clang diagnostic pop
#endif

    MOZ_IMPLICIT LayerTreeIdMapping(
            const LayersId& _layersId,
            const ProcessId& _ownerId) :
        layersId_(_layersId),
        ownerId_(_ownerId)
    {
    }

    MOZ_IMPLICIT LayerTreeIdMapping(
            LayersId&& _layersId,
            ProcessId&& _ownerId) :
        layersId_(std::move(_layersId)),
        ownerId_(std::move(_ownerId))
    {
    }

    LayersId&
    layersId()
    {
        return layersId_;
    }
    const LayersId&
    layersId() const
    {
        return layersId_;
    }

    ProcessId&
    ownerId()
    {
        return ownerId_;
    }
    const ProcessId&
    ownerId() const
    {
        return ownerId_;
    }

private:
    ::mozilla::ipc::IPDLStructMember<LayersId> layersId_;
    ::mozilla::ipc::IPDLStructMember<ProcessId> ownerId_;
};
} // namespace gfx
} // namespace mozilla

namespace IPC {
template<>
struct ParamTraits <::mozilla::gfx::LayerTreeIdMapping>
{
    typedef ::mozilla::gfx::LayerTreeIdMapping paramType;
    static void
    Write(
            IPC::MessageWriter* aWriter,
            const paramType& aVar);
    static IPC::ReadResult<paramType>
    Read(IPC::MessageReader* aReader);
};
} // namespace IPC

namespace mozilla {
namespace gfx {
class PGPUParent;
} // namespace gfx
} // namespace mozilla
namespace mozilla {
namespace gfx {
class PGPUChild;
} // namespace gfx
} // namespace mozilla

//-----------------------------------------------------------------------------
// Code common to PGPUChild and PGPUParent
//
namespace mozilla {
namespace gfx {
namespace PGPU {

nsresult
CreateEndpoints(
        mozilla::ipc::EndpointProcInfo aParentDestInfo,
        mozilla::ipc::EndpointProcInfo aChildDestInfo,
        mozilla::ipc::Endpoint<::mozilla::gfx::PGPUParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::gfx::PGPUChild>* aChild);

enum MessageType {
    PGPUStart = PGPUMsgStart << 16,
    Msg_Init__ID,
    Reply_Init__ID,
    Msg_InitCompositorManager__ID,
    Msg_InitVsyncBridge__ID,
    Msg_InitImageBridge__ID,
    Msg_InitVideoBridge__ID,
    Msg_InitVRManager__ID,
    Msg_InitUiCompositorController__ID,
    Msg_InitAPZInputBridge__ID,
    Msg_InitProfiler__ID,
    Msg_InitVR__ID,
    Msg_UpdateVar__ID,
    Msg_PreferenceUpdate__ID,
    Msg_ScreenInformationChanged__ID,
    Msg_NotifyBatteryInfo__ID,
    Msg_NewContentCompositorManager__ID,
    Msg_NewContentImageBridge__ID,
    Msg_NewContentVRManager__ID,
    Msg_NewContentRemoteMediaManager__ID,
    Msg_AddLayerTreeIdMapping__ID,
    Reply_AddLayerTreeIdMapping__ID,
    Msg_RemoveLayerTreeIdMapping__ID,
    Msg_GetDeviceStatus__ID,
    Reply_GetDeviceStatus__ID,
    Msg_SimulateDeviceReset__ID,
    Msg_NotifyGpuObservers__ID,
    Msg_RequestMemoryReport__ID,
    Reply_RequestMemoryReport__ID,
    Msg_ShutdownVR__ID,
    Msg_UpdatePerfStatsCollectionMask__ID,
    Msg_CollectPerfStatsJSON__ID,
    Reply_CollectPerfStatsJSON__ID,
    Msg_FlushFOGData__ID,
    Reply_FlushFOGData__ID,
    Msg_TestTriggerMetrics__ID,
    Reply_TestTriggerMetrics__ID,
    Msg_CrashProcess__ID,
    Msg_ReportCheckerboard__ID,
    Msg_GraphicsError__ID,
    Msg_InitCrashReporter__ID,
    Msg_CreateVRProcess__ID,
    Msg_ShutdownVRProcess__ID,
    Msg_NotifyUiObservers__ID,
    Msg_AccumulateChildHistograms__ID,
    Msg_AccumulateChildKeyedHistograms__ID,
    Msg_UpdateChildScalars__ID,
    Msg_UpdateChildKeyedScalars__ID,
    Msg_RecordChildEvents__ID,
    Msg_RecordDiscardedData__ID,
    Msg_DeclareStable__ID,
    Msg_NotifyDeviceReset__ID,
    Msg_NotifyOverlayInfo__ID,
    Msg_NotifySwapChainInfo__ID,
    Msg_NotifyDisableRemoteCanvas__ID,
    Msg_FlushMemory__ID,
    Msg_AddMemoryReport__ID,
    Msg_UpdateFeature__ID,
    Msg_UsedFallback__ID,
    Msg_BHRThreadHang__ID,
    Msg_UpdateMediaCodecsSupported__ID,
    Msg_FOGData__ID,
    PGPUEnd
};

mozilla::UniquePtr<IPC::Message>
Msg_Init(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_Init(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_InitCompositorManager(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_InitVsyncBridge(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_InitImageBridge(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_InitVideoBridge(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_InitVRManager(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_InitUiCompositorController(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_InitAPZInputBridge(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_InitProfiler(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_InitVR(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_UpdateVar(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_PreferenceUpdate(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_ScreenInformationChanged(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NotifyBatteryInfo(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NewContentCompositorManager(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NewContentImageBridge(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NewContentVRManager(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NewContentRemoteMediaManager(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_AddLayerTreeIdMapping(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_AddLayerTreeIdMapping(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RemoveLayerTreeIdMapping(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_GetDeviceStatus(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_GetDeviceStatus(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_SimulateDeviceReset(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NotifyGpuObservers(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RequestMemoryReport(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_RequestMemoryReport(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_ShutdownVR(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_UpdatePerfStatsCollectionMask(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_CollectPerfStatsJSON(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_CollectPerfStatsJSON(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_FlushFOGData(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_FlushFOGData(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_TestTriggerMetrics(IPC::Message::routeid_t routingId);
mozilla::UniquePtr<IPC::Message>
Reply_TestTriggerMetrics(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_CrashProcess(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_ReportCheckerboard(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_GraphicsError(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_InitCrashReporter(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_CreateVRProcess(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_ShutdownVRProcess(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NotifyUiObservers(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_AccumulateChildHistograms(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_AccumulateChildKeyedHistograms(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_UpdateChildScalars(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_UpdateChildKeyedScalars(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RecordChildEvents(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_RecordDiscardedData(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_DeclareStable(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NotifyDeviceReset(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NotifyOverlayInfo(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NotifySwapChainInfo(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_NotifyDisableRemoteCanvas(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_FlushMemory(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_AddMemoryReport(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_UpdateFeature(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_UsedFallback(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_BHRThreadHang(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_UpdateMediaCodecsSupported(IPC::Message::routeid_t routingId);

mozilla::UniquePtr<IPC::Message>
Msg_FOGData(IPC::Message::routeid_t routingId);



} // namespace PGPU
} // namespace gfx
} // namespace mozilla

#endif // ifndef PGPU_h
