1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Multiply-included message file, hence no include guard here, but see below
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// for a much smaller-than-usual include guard section.
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <vector>
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ipc/ipc_message_macros.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "third_party/skia/include/core/SkBitmap.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/gfx/geometry/point.h"
1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "ui/gfx/geometry/rect.h"
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/gfx/ipc/gfx_param_traits.h"
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/gfx/native_widget_types.h"
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/ozone/common/gpu/ozone_gpu_message_params.h"
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/ozone/ozone_export.h"
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#undef IPC_MESSAGE_EXPORT
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define IPC_MESSAGE_EXPORT OZONE_EXPORT
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define IPC_MESSAGE_START OzoneGpuMsgStart
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
24116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_ENUM_TRAITS_MAX_VALUE(ui::DisplayConnectionType,
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                          ui::DISPLAY_CONNECTION_TYPE_LAST)
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
27116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_STRUCT_TRAITS_BEGIN(ui::DisplayMode_Params)
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(size)
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(is_interlaced)
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(refresh_rate)
31116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_STRUCT_TRAITS_END()
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
33116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_STRUCT_TRAITS_BEGIN(ui::DisplaySnapshot_Params)
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(display_id)
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(has_proper_display_id)
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(origin)
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(physical_size)
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(type)
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(is_aspect_preserving_scaling)
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(has_overscan)
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(display_name)
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(modes)
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(has_current_mode)
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(current_mode)
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(has_native_mode)
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(native_mode)
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  IPC_STRUCT_TRAITS_MEMBER(string_representation)
48116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_STRUCT_TRAITS_END()
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch//------------------------------------------------------------------------------
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// GPU Messages
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// These are messages from the browser to the GPU process.
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Update the HW cursor bitmap & move to specified location.
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIPC_MESSAGE_CONTROL4(OzoneGpuMsg_CursorSet,
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                     gfx::AcceleratedWidget,
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                     std::vector<SkBitmap>,
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                     gfx::Point /* location */,
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                     int /* frame_delay_ms */)
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Move the HW cursor to the specified location.
62116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_MESSAGE_CONTROL2(OzoneGpuMsg_CursorMove,
63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                     gfx::AcceleratedWidget, gfx::Point)
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
6503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Explicit creation of a WindowDelegate. We explicitly create the window
6603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// delegate such that any state change in the window is not lost while the
6703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// surface is created on the GPU side.
6803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)IPC_MESSAGE_CONTROL1(OzoneGpuMsg_CreateWindowDelegate,
6903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                     gfx::AcceleratedWidget /* widget */)
7003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
7103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)IPC_MESSAGE_CONTROL1(OzoneGpuMsg_DestroyWindowDelegate,
7203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                     gfx::AcceleratedWidget /* widget */)
7303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
7403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Updates the location and size of the widget on the screen.
7503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)IPC_MESSAGE_CONTROL2(OzoneGpuMsg_WindowBoundsChanged,
7603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                     gfx::AcceleratedWidget /* widget */,
7703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                     gfx::Rect /* bounds */)
7803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#if defined(OS_CHROMEOS)
80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Force the DPMS state of the display to on.
81116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_MESSAGE_CONTROL0(OzoneGpuMsg_ForceDPMSOn)
82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Trigger a display reconfiguration. OzoneHostMsg_UpdateNativeDisplays will be
84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// sent as a response.
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// The |displays| parameter will hold a list of last known displays.
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIPC_MESSAGE_CONTROL1(OzoneGpuMsg_RefreshNativeDisplays,
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                     std::vector<ui::DisplaySnapshot_Params> /* displays */)
88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Configure a display with the specified mode at the specified location.
90116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_MESSAGE_CONTROL3(OzoneGpuMsg_ConfigureNativeDisplay,
91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                     int64_t,  // display ID
92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                     ui::DisplayMode_Params,  // display mode
93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                     gfx::Point)  // origin for the display
94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
95116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_MESSAGE_CONTROL1(OzoneGpuMsg_DisableNativeDisplay,
96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                     int64_t)  // display ID
97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch//------------------------------------------------------------------------------
99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Browser Messages
100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// These messages are from the GPU to the browser process.
101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Updates the list of active displays.
103116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_MESSAGE_CONTROL1(OzoneHostMsg_UpdateNativeDisplays,
104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                     std::vector<ui::DisplaySnapshot_Params>)
105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif
106