#ifndef GPU_IPC_COMMON_GPU_CHANNEL_MOJOM_SHARED_H_
#define GPU_IPC_COMMON_GPU_CHANNEL_MOJOM_SHARED_H_
#include <stdint.h>
#include <functional>
#include <iosfwd>
#include <type_traits>
#include <utility>
#include "mojo/public/cpp/bindings/array_data_view.h"
#include "mojo/public/cpp/bindings/enum_traits.h"
#include "mojo/public/cpp/bindings/interface_data_view.h"
#include "mojo/public/cpp/bindings/lib/bindings_internal.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/map_data_view.h"
#include "mojo/public/cpp/bindings/string_data_view.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"
#include "gpu/ipc/common/gpu_channel.mojom-shared-internal.h"
#include "gpu/ipc/common/capabilities.mojom-shared.h"
#include "gpu/ipc/common/context_result.mojom-shared.h"
#include "gpu/ipc/common/mailbox.mojom-shared.h"
#include "gpu/ipc/common/shared_image_metadata.mojom-shared.h"
#include "gpu/ipc/common/surface_handle.mojom-shared.h"
#include "gpu/ipc/common/sync_token.mojom-shared.h"
#include "gpu/ipc/common/vulkan_ycbcr_info.mojom-shared.h"
#include "mojo/public/mojom/base/shared_memory.mojom-shared.h"
#include "mojo/public/mojom/base/unguessable_token.mojom-shared.h"
#include "services/viz/public/mojom/compositing/shared_image_format.mojom-shared.h"
#include "skia/public/mojom/image_info.mojom-shared.h"
#include "skia/public/mojom/surface_origin.mojom-shared.h"
#include "ui/gfx/geometry/mojom/geometry.mojom-shared.h"
#include "ui/gfx/mojom/buffer_types.mojom-shared.h"
#include "ui/gfx/mojom/color_space.mojom-shared.h"
#include "ui/gfx/mojom/gpu_fence_handle.mojom-shared.h"
#include "ui/gfx/mojom/native_handle_types.mojom-shared.h"
#include "ui/gfx/mojom/presentation_feedback.mojom-shared.h"
#include "ui/gl/mojom/gpu_preference.mojom-shared.h"
#include "url/mojom/url.mojom-shared.h"
#include "mojo/public/cpp/bindings/lib/interface_serialization.h"
#include "mojo/public/cpp/system/data_pipe.h"
#include "mojo/public/cpp/bindings/native_enum.h"
#include "mojo/public/cpp/bindings/lib/native_struct_serialization.h"
#include "base/component_export.h"
namespace gpu::mojom {
class ContextCreationAttribsDataView;
class CreateCommandBufferParamsDataView;
class CommandBufferStateDataView;
class ScheduleImageDecodeParamsDataView;
SwapBuffersCompleteParamsDataView;
class DeferredRequestDataView;
class DeferredCommandBufferRequestDataView;
class AsyncFlushParamsDataView;
class SetDefaultFramebufferSharedImageParamsDataView;
class SharedImageInfoDataView;
class CreateSharedImageParamsDataView;
class CreateSharedImageWithDataParamsDataView;
class CreateSharedImageWithBufferParamsDataView;
class UpdateSharedImageParamsDataView;
class AddReferenceToSharedImageParamsDataView;
class CopyToGpuMemoryBufferParamsDataView;
class DeferredRequestParamsDataView;
class DeferredCommandBufferRequestParamsDataView;
class DeferredSharedImageRequestDataView;
}
namespace mojo {
namespace internal {
template <>
struct MojomTypeTraits<::gpu::mojom::ContextCreationAttribsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::CreateCommandBufferParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::CommandBufferStateDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::ScheduleImageDecodeParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::DeferredRequestDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::DeferredCommandBufferRequestDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::AsyncFlushParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::SetDefaultFramebufferSharedImageParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::SharedImageInfoDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::CreateSharedImageParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::CreateSharedImageWithDataParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::CreateSharedImageWithBufferParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::UpdateSharedImageParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::AddReferenceToSharedImageParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::CopyToGpuMemoryBufferParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::DeferredRequestParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::DeferredCommandBufferRequestParamsDataView> { … };
template <>
struct MojomTypeTraits<::gpu::mojom::DeferredSharedImageRequestDataView> { … };
}
}
namespace gpumojom
namespace std {
template <>
struct hash<::gpu::mojom::ContextType>
: public mojo::internal::EnumHashImpl<::gpu::mojom::ContextType> { … };
template <>
struct hash<::gpu::mojom::ContextColorSpace>
: public mojo::internal::EnumHashImpl<::gpu::mojom::ContextColorSpace> { … };
template <>
struct hash<::gpu::mojom::SchedulingPriority>
: public mojo::internal::EnumHashImpl<::gpu::mojom::SchedulingPriority> { … };
}
namespace mojo {
namespace internal {
Serializer< ::gpu::mojom::ContextType, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::ContextColorSpace, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::SchedulingPriority, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::ContextCreationAttribsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::CreateCommandBufferParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::CommandBufferStateDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::ScheduleImageDecodeParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::DeferredRequestDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::DeferredCommandBufferRequestDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::AsyncFlushParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::SetDefaultFramebufferSharedImageParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::SharedImageInfoDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::CreateSharedImageParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::CreateSharedImageWithDataParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::CreateSharedImageWithBufferParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::UpdateSharedImageParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::AddReferenceToSharedImageParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::CopyToGpuMemoryBufferParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::DeferredRequestParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::DeferredCommandBufferRequestParamsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::gpu::mojom::DeferredSharedImageRequestDataView, MaybeConstUserType>;
}
}
namespace gpu::mojom {
inline void CreateCommandBufferParamsDataView::GetAttribsDataView(
ContextCreationAttribsDataView* output) { … }
inline void CreateCommandBufferParamsDataView::GetActiveUrlDataView(
::url::mojom::UrlDataView* output) { … }
inline void ScheduleImageDecodeParamsDataView::GetEncodedDataDataView(
mojo::ArrayDataView<uint8_t>* output) { … }
inline void ScheduleImageDecodeParamsDataView::GetOutputSizeDataView(
::gfx::mojom::SizeDataView* output) { … }
inline void ScheduleImageDecodeParamsDataView::GetTargetColorSpaceDataView(
::gfx::mojom::ColorSpaceDataView* output) { … }
inline void DeferredRequestDataView::GetParamsDataView(
DeferredRequestParamsDataView* output) { … }
inline void DeferredRequestDataView::GetSyncTokenFencesDataView(
mojo::ArrayDataView<::gpu::mojom::SyncTokenDataView>* output) { … }
inline void DeferredCommandBufferRequestDataView::GetParamsDataView(
DeferredCommandBufferRequestParamsDataView* output) { … }
inline void AsyncFlushParamsDataView::GetSyncTokenFencesDataView(
mojo::ArrayDataView<::gpu::mojom::SyncTokenDataView>* output) { … }
inline void SetDefaultFramebufferSharedImageParamsDataView::GetMailboxDataView(
::gpu::mojom::MailboxDataView* output) { … }
inline void SharedImageInfoDataView::GetMetaDataView(
::gpu::mojom::SharedImageMetadataDataView* output) { … }
inline void SharedImageInfoDataView::GetDebugLabelDataView(
mojo::StringDataView* output) { … }
inline void CreateSharedImageParamsDataView::GetMailboxDataView(
::gpu::mojom::MailboxDataView* output) { … }
inline void CreateSharedImageParamsDataView::GetSiInfoDataView(
SharedImageInfoDataView* output) { … }
inline void CreateSharedImageWithDataParamsDataView::GetMailboxDataView(
::gpu::mojom::MailboxDataView* output) { … }
inline void CreateSharedImageWithDataParamsDataView::GetSiInfoDataView(
SharedImageInfoDataView* output) { … }
inline void CreateSharedImageWithBufferParamsDataView::GetMailboxDataView(
::gpu::mojom::MailboxDataView* output) { … }
inline void CreateSharedImageWithBufferParamsDataView::GetSiInfoDataView(
SharedImageInfoDataView* output) { … }
inline void CreateSharedImageWithBufferParamsDataView::GetBufferHandleDataView(
::gfx::mojom::GpuMemoryBufferHandleDataView* output) { … }
inline void UpdateSharedImageParamsDataView::GetMailboxDataView(
::gpu::mojom::MailboxDataView* output) { … }
inline void UpdateSharedImageParamsDataView::GetInFenceHandleDataView(
::gfx::mojom::GpuFenceHandleDataView* output) { … }
inline void AddReferenceToSharedImageParamsDataView::GetMailboxDataView(
::gpu::mojom::MailboxDataView* output) { … }
inline void CopyToGpuMemoryBufferParamsDataView::GetMailboxDataView(
::gpu::mojom::MailboxDataView* output) { … }
inline void DeferredRequestParamsDataView::GetCommandBufferRequestDataView(
DeferredCommandBufferRequestDataView* output) const { … }
inline void DeferredRequestParamsDataView::GetSharedImageRequestDataView(
DeferredSharedImageRequestDataView* output) const { … }
inline void DeferredCommandBufferRequestParamsDataView::GetAsyncFlushDataView(
AsyncFlushParamsDataView* output) const { … }
inline void DeferredCommandBufferRequestParamsDataView::GetSetDefaultFramebufferSharedImageDataView(
SetDefaultFramebufferSharedImageParamsDataView* output) const { … }
inline void DeferredSharedImageRequestDataView::GetCreateSharedImageDataView(
CreateSharedImageParamsDataView* output) const { … }
inline void DeferredSharedImageRequestDataView::GetCreateSharedImageWithDataDataView(
CreateSharedImageWithDataParamsDataView* output) const { … }
inline void DeferredSharedImageRequestDataView::GetCreateSharedImageWithBufferDataView(
CreateSharedImageWithBufferParamsDataView* output) const { … }
inline void DeferredSharedImageRequestDataView::GetRegisterUploadBufferDataView(
::mojo_base::mojom::ReadOnlySharedMemoryRegionDataView* output) const { … }
inline void DeferredSharedImageRequestDataView::GetUpdateSharedImageDataView(
UpdateSharedImageParamsDataView* output) const { … }
inline void DeferredSharedImageRequestDataView::GetCopyToGpuMemoryBufferDataView(
CopyToGpuMemoryBufferParamsDataView* output) const { … }
inline void DeferredSharedImageRequestDataView::GetDestroySharedImageDataView(
::gpu::mojom::MailboxDataView* output) const { … }
inline void DeferredSharedImageRequestDataView::GetAddReferenceToSharedImageDataView(
AddReferenceToSharedImageParamsDataView* output) const { … }
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_GPU_EXPORT) TraceFormatTraits<::gpu::mojom::ContextType> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_GPU_EXPORT) TraceFormatTraits<::gpu::mojom::ContextColorSpace> { … };
}
namespace perfetto {
template <>
struct COMPONENT_EXPORT(MOJOM_SHARED_GPU_EXPORT) TraceFormatTraits<::gpu::mojom::SchedulingPriority> { … };
}
#endif