Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: chrome/common/gpu_messages_internal.h

Issue 6646005: Creates the ipclist utility that chrome security team has wanted to dump... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <vector>
6 #include <string>
7
8 #include "base/shared_memory.h"
9 #include "chrome/common/gpu_info.h"
10 #include "chrome/common/gpu_video_common.h"
11 #include "ipc/ipc_message_macros.h"
12
13 #define IPC_MESSAGE_START GpuMsgStart
14
15 namespace gfx {
16 class Size;
17 }
18
19 namespace IPC {
20 struct ChannelHandle;
21 }
22
23 struct GPUCreateCommandBufferConfig;
24 struct GPUInfo;
25
26 //------------------------------------------------------------------------------
27 // GPU Messages
28 // These are messages from the browser to the GPU process.
29
30 // Tells the GPU process to initialize itself. The browser explicitly
31 // requests this be done so that we are guaranteed that the channel is set
32 // up between the browser and GPU process before doing any work that might
33 // potentially crash the GPU process. Detection of the child process
34 // exiting abruptly is predicated on having the IPC channel set up.
35 IPC_MESSAGE_CONTROL0(GpuMsg_Initialize)
36
37 // Tells the GPU process to create a new channel for communication with a
38 // given renderer. The channel name is returned in a
39 // GpuHostMsg_ChannelEstablished message. The renderer ID is passed so that
40 // the GPU process reuses an existing channel to that process if it exists.
41 // This ID is a unique opaque identifier generated by the browser process.
42 IPC_MESSAGE_CONTROL1(GpuMsg_EstablishChannel,
43 int /* renderer_id */)
44
45 // Tells the GPU process to close the channel identified by IPC channel
46 // handle. If no channel can be identified, do nothing.
47 IPC_MESSAGE_CONTROL1(GpuMsg_CloseChannel,
48 IPC::ChannelHandle /* channel_handle */)
49
50 // Provides a synchronization point to guarantee that the processing of
51 // previous asynchronous messages (i.e., GpuMsg_EstablishChannel) has
52 // completed. (This message can't be synchronous because the
53 // GpuProcessHost uses an IPC::ChannelProxy, which sends all messages
54 // asynchronously.) Results in a GpuHostMsg_SynchronizeReply.
55 IPC_MESSAGE_CONTROL0(GpuMsg_Synchronize)
56
57 // Tells the GPU process to create a new command buffer that renders directly
58 // to a native view. A corresponding GpuCommandBufferStub is created.
59 IPC_MESSAGE_CONTROL4(GpuMsg_CreateViewCommandBuffer,
60 gfx::PluginWindowHandle, /* view */
61 int32, /* render_view_id */
62 int32, /* renderer_id */
63 GPUCreateCommandBufferConfig /* init_params */)
64
65 // Tells the GPU process to create a context for collecting graphics card
66 // information.
67 IPC_MESSAGE_CONTROL1(GpuMsg_CollectGraphicsInfo,
68 GPUInfo::Level /* level */)
69
70 #if defined(OS_MACOSX)
71 // Tells the GPU process that the browser process handled the swap
72 // buffers request with the given number. Note that it is possible
73 // for the browser process to coalesce frames; it is not guaranteed
74 // that every GpuHostMsg_AcceleratedSurfaceBuffersSwapped message
75 // will result in a buffer swap on the browser side.
76 IPC_MESSAGE_CONTROL3(GpuMsg_AcceleratedSurfaceBuffersSwappedACK,
77 int /* renderer_id */,
78 int32 /* route_id */,
79 uint64 /* swap_buffers_count */)
80
81 // Tells the GPU process that the IOSurface of the buffer belonging to
82 // |renderer_route_id| a given id was destroyed, either by the user closing the
83 // tab hosting the surface, or by the renderer navigating to a new page.
84 IPC_MESSAGE_CONTROL2(GpuMsg_DidDestroyAcceleratedSurface,
85 int /* renderer_id */,
86 int32 /* renderer_route_id */)
87 #endif
88
89 // Tells the GPU process to crash.
90 IPC_MESSAGE_CONTROL0(GpuMsg_Crash)
91
92 // Tells the GPU process to hang.
93 IPC_MESSAGE_CONTROL0(GpuMsg_Hang)
94
95 //------------------------------------------------------------------------------
96 // GPU Host Messages
97 // These are messages to the browser.
98
99 // A renderer sends this when it wants to create a connection to the GPU
100 // process. The browser will create the GPU process if necessary, and will
101 // return a handle to the channel via a GpuChannelEstablished message.
102 IPC_MESSAGE_CONTROL0(GpuHostMsg_EstablishGpuChannel)
103
104 // A renderer sends this to the browser process to provide a synchronization
105 // point for GPU operations, in particular to make sure the GPU channel has
106 // been established.
107 IPC_SYNC_MESSAGE_CONTROL0_0(GpuHostMsg_SynchronizeGpu)
108
109 // A renderer sends this to the browser process when it wants to
110 // create a GL context associated with the given view_id.
111 IPC_SYNC_MESSAGE_CONTROL2_1(GpuHostMsg_CreateViewCommandBuffer,
112 int32, /* render_view_id */
113 GPUCreateCommandBufferConfig, /* init_params */
114 int32 /* route_id */)
115
116 // Response from GPU to a GpuHostMsg_EstablishChannel message.
117 IPC_MESSAGE_CONTROL2(GpuHostMsg_ChannelEstablished,
118 IPC::ChannelHandle, /* channel_handle */
119 GPUInfo /* GPU logging stats */)
120
121 // Respond from GPU to a GpuMsg_CreateViewCommandBuffer message.
122 IPC_MESSAGE_CONTROL1(GpuHostMsg_CommandBufferCreated,
123 int32 /* route_id */)
124
125 // Request from GPU to free the browser resources associated with the
126 // command buffer.
127 IPC_MESSAGE_CONTROL3(GpuHostMsg_DestroyCommandBuffer,
128 gfx::PluginWindowHandle, /* view */
129 int32, /* render_view_id */
130 int32 /* renderer_id */)
131
132 // Response from GPU to a GpuMsg_CollectGraphicsInfo.
133 IPC_MESSAGE_CONTROL1(GpuHostMsg_GraphicsInfoCollected,
134 GPUInfo /* GPU logging stats */)
135
136 // Message from GPU to add a GPU log message to the about:gpu page.
137 IPC_MESSAGE_CONTROL3(GpuHostMsg_OnLogMessage,
138 int /*severity*/,
139 std::string /* header */,
140 std::string /* message */)
141
142 // Response from GPU to a GpuMsg_Synchronize message.
143 IPC_MESSAGE_CONTROL0(GpuHostMsg_SynchronizeReply)
144
145 #if defined(OS_LINUX) && !defined(TOUCH_UI)
146 // Resize the window that is being drawn into. It's important that this
147 // resize be synchronized with the swapping of the front and back buffers.
148 IPC_SYNC_MESSAGE_CONTROL2_1(GpuHostMsg_ResizeXID,
149 unsigned long, /* xid */
150 gfx::Size, /* size */
151 bool /* success */)
152 #elif defined(OS_MACOSX)
153 // This message, used on Mac OS X 10.6 and later (where IOSurface is
154 // supported), is sent from the GPU process to the browser to indicate that a
155 // new backing store was allocated for the given "window" (fake
156 // PluginWindowHandle). The renderer ID and render view ID are needed in
157 // order to uniquely identify the RenderWidgetHostView on the browser side.
158 IPC_MESSAGE_CONTROL1(GpuHostMsg_AcceleratedSurfaceSetIOSurface,
159 GpuHostMsg_AcceleratedSurfaceSetIOSurface_Params)
160
161 // This message notifies the browser process that the renderer
162 // swapped the buffers associated with the given "window", which
163 // should cause the browser to redraw the compositor's contents.
164 IPC_MESSAGE_CONTROL1(GpuHostMsg_AcceleratedSurfaceBuffersSwapped,
165 GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params)
166 #elif defined(OS_WIN)
167 IPC_MESSAGE_CONTROL2(GpuHostMsg_ScheduleComposite,
168 int32, /* renderer_id */
169 int32 /* render_view_id */)
170 #endif
171
172 //------------------------------------------------------------------------------
173 // GPU Channel Messages
174 // These are messages from a renderer process to the GPU process.
175
176 // Initialize a channel between a renderer process and a GPU process. The
177 // renderer passes its process handle to the GPU process, which gives gives the
178 // GPU process the ability to map handles from the renderer process. This must
179 // be the first message sent on a newly connected channel.
180 IPC_MESSAGE_CONTROL1(GpuChannelMsg_Initialize,
181 base::ProcessHandle /* renderer_process_for_gpu */)
182
183 // Tells the GPU process to create a new command buffer that renders to an
184 // offscreen frame buffer. If parent_route_id is not zero, the texture backing
185 // the frame buffer is mapped into the corresponding parent command buffer's
186 // namespace, with the name of parent_texture_id. This ID is in the parent's
187 // namespace.
188 IPC_SYNC_MESSAGE_CONTROL4_1(GpuChannelMsg_CreateOffscreenCommandBuffer,
189 int32, /* parent_route_id */
190 gfx::Size, /* size */
191 GPUCreateCommandBufferConfig, /* init_params */
192 uint32, /* parent_texture_id */
193 int32 /* route_id */)
194
195 // The CommandBufferProxy sends this to the GpuCommandBufferStub in its
196 // destructor, so that the stub deletes the actual CommandBufferService
197 // object that it's hosting.
198 // TODO(apatrick): Implement this.
199 IPC_SYNC_MESSAGE_CONTROL1_0(GpuChannelMsg_DestroyCommandBuffer,
200 int32 /* instance_id */)
201
202 // Create hardware video decoder && associate it with the output |decoder_id|;
203 // We need this to be control message because we had to map the GpuChannel and
204 // |decoder_id|.
205 IPC_MESSAGE_CONTROL2(GpuChannelMsg_CreateVideoDecoder,
206 int32, /* context_route_id */
207 int32) /* decoder_id */
208
209 // Release all resource of the hardware video decoder which was assocaited
210 // with the input |decoder_id|.
211 // TODO(hclam): This message needs to be asynchronous.
212 IPC_SYNC_MESSAGE_CONTROL1_0(GpuChannelMsg_DestroyVideoDecoder,
213 int32 /* decoder_id */)
214
215 //------------------------------------------------------------------------------
216 // GPU Command Buffer Messages
217 // These are messages between a renderer process to the GPU process relating to
218 // a single OpenGL context.
219 // Initialize a command buffer with the given number of command entries.
220 // Returns the shared memory handle for the command buffer mapped to the
221 // calling process.
222 IPC_SYNC_MESSAGE_ROUTED2_1(GpuCommandBufferMsg_Initialize,
223 base::SharedMemoryHandle /* ring_buffer */,
224 int32 /* size */,
225 bool /* result */)
226
227 // Get the current state of the command buffer.
228 IPC_SYNC_MESSAGE_ROUTED0_1(GpuCommandBufferMsg_GetState,
229 gpu::CommandBuffer::State /* state */)
230
231 // Get the current state of the command buffer asynchronously. State is
232 // returned via UpdateState message.
233 IPC_MESSAGE_ROUTED0(GpuCommandBufferMsg_AsyncGetState)
234
235 // Synchronize the put and get offsets of both processes. Caller passes its
236 // current put offset. Current state (including get offset) is returned.
237 IPC_SYNC_MESSAGE_ROUTED1_1(GpuCommandBufferMsg_Flush,
238 int32 /* put_offset */,
239 gpu::CommandBuffer::State /* state */)
240
241 // Asynchronously synchronize the put and get offsets of both processes.
242 // Caller passes its current put offset. Current state (including get offset)
243 // is returned via an UpdateState message.
244 IPC_MESSAGE_ROUTED1(GpuCommandBufferMsg_AsyncFlush,
245 int32 /* put_offset */)
246
247 // Return the current state of the command buffer following a request via
248 // an AsyncGetState or AsyncFlush message. (This message is sent from the
249 // GPU process to the renderer process.)
250 IPC_MESSAGE_ROUTED1(GpuCommandBufferMsg_UpdateState,
251 gpu::CommandBuffer::State /* state */)
252
253 // Indicates that a SwapBuffers call has been issued.
254 IPC_MESSAGE_ROUTED0(GpuCommandBufferMsg_SwapBuffers)
255
256 // Create a shared memory transfer buffer. Returns an id that can be used to
257 // identify the transfer buffer from a comment.
258 IPC_SYNC_MESSAGE_ROUTED1_1(GpuCommandBufferMsg_CreateTransferBuffer,
259 int32 /* size */,
260 int32 /* id */)
261
262 // Register an existing shared memory transfer buffer. Returns an id that can be
263 // used to identify the transfer buffer from a command buffer.
264 IPC_SYNC_MESSAGE_ROUTED2_1(GpuCommandBufferMsg_RegisterTransferBuffer,
265 base::SharedMemoryHandle /* transfer_buffer */,
266 size_t /* size */,
267 int32 /* id */)
268
269 // Destroy a previously created transfer buffer.
270 IPC_SYNC_MESSAGE_ROUTED1_0(GpuCommandBufferMsg_DestroyTransferBuffer,
271 int32 /* id */)
272
273 // Get the shared memory handle for a transfer buffer mapped to the callers
274 // process.
275 IPC_SYNC_MESSAGE_ROUTED1_2(GpuCommandBufferMsg_GetTransferBuffer,
276 int32 /* id */,
277 base::SharedMemoryHandle /* transfer_buffer */,
278 uint32 /* size */)
279
280 // Send from command buffer stub to proxy when window is invalid and must be
281 // repainted.
282 IPC_MESSAGE_ROUTED0(GpuCommandBufferMsg_NotifyRepaint)
283
284 // Tells the GPU process to resize an offscreen frame buffer.
285 IPC_MESSAGE_ROUTED1(GpuCommandBufferMsg_ResizeOffscreenFrameBuffer,
286 gfx::Size /* size */)
287
288 #if defined(OS_MACOSX)
289 // On Mac OS X the GPU plugin must be offscreen, because there is no
290 // true cross-process window hierarchy. For this reason we must send
291 // resize events explicitly to the command buffer stub so it can
292 // reallocate its backing store and send the new one back to the
293 // browser. This message is currently used only on 10.6 and later.
294 IPC_MESSAGE_ROUTED1(GpuCommandBufferMsg_SetWindowSize,
295 gfx::Size /* size */)
296 #endif
297
298 //------------------------------------------------------------------------------
299 // GPU Video Decoder Messages
300 // These messages are sent from Renderer process to GPU process.
301 // Initialize and configure GpuVideoDecoder asynchronously.
302 IPC_MESSAGE_ROUTED1(GpuVideoDecoderMsg_Initialize,
303 GpuVideoDecoderInitParam)
304
305 // Destroy and release GpuVideoDecoder asynchronously.
306 IPC_MESSAGE_ROUTED0(GpuVideoDecoderMsg_Destroy)
307
308 // Start decoder flushing operation.
309 IPC_MESSAGE_ROUTED0(GpuVideoDecoderMsg_Flush)
310
311 // Tell the decoder to start prerolling.
312 IPC_MESSAGE_ROUTED0(GpuVideoDecoderMsg_Preroll)
313
314 // Send input buffer to GpuVideoDecoder.
315 IPC_MESSAGE_ROUTED1(GpuVideoDecoderMsg_EmptyThisBuffer,
316 GpuVideoDecoderInputBufferParam)
317
318 // Ask the GPU process to produce a video frame with the ID.
319 IPC_MESSAGE_ROUTED1(GpuVideoDecoderMsg_ProduceVideoFrame,
320 int32) /* Video Frame ID */
321
322 // Sent from Renderer process to the GPU process to notify that textures are
323 // generated for a video frame.
324 IPC_MESSAGE_ROUTED2(GpuVideoDecoderMsg_VideoFrameAllocated,
325 int32, /* Video Frame ID */
326 std::vector<uint32>) /* Textures for video frame */
327
328 //------------------------------------------------------------------------------
329 // GPU Video Decoder Host Messages
330 // These messages are sent from GPU process to Renderer process.
331 // Inform GpuVideoDecoderHost that a GpuVideoDecoder is created.
332 IPC_MESSAGE_ROUTED1(GpuVideoDecoderHostMsg_CreateVideoDecoderDone,
333 int32) /* decoder_id */
334
335 // Confirm GpuVideoDecoder had been initialized or failed to initialize.
336 // TODO(hclam): Change this to Done instead of ACK.
337 IPC_MESSAGE_ROUTED1(GpuVideoDecoderHostMsg_InitializeACK,
338 GpuVideoDecoderInitDoneParam)
339
340 // Confrim GpuVideoDecoder had been destroyed properly.
341 // TODO(hclam): Change this to Done instead of ACK.
342 IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_DestroyACK)
343
344 // Confirm decoder had been flushed.
345 // TODO(hclam): Change this to Done instead of ACK.
346 IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_FlushACK)
347
348 // Confirm preroll operation is done.
349 IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_PrerollDone)
350
351 // GpuVideoDecoder has consumed input buffer from transfer buffer.
352 // TODO(hclam): Change this to Done instead of ACK.
353 IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_EmptyThisBufferACK)
354
355 // GpuVideoDecoder require new input buffer.
356 IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_EmptyThisBufferDone)
357
358 // GpuVideoDecoder reports that a video frame is ready to be consumed.
359 IPC_MESSAGE_ROUTED4(GpuVideoDecoderHostMsg_ConsumeVideoFrame,
360 int32, /* Video Frame ID */
361 int64, /* Timestamp in microseconds */
362 int64, /* Duration in microseconds */
363 int32) /* Flags */
364
365 // Allocate video frames for output of the hardware video decoder.
366 IPC_MESSAGE_ROUTED4(GpuVideoDecoderHostMsg_AllocateVideoFrames,
367 int32, /* Number of video frames to generate */
368 uint32, /* Width of the video frame */
369 uint32, /* Height of the video frame */
370 int32 /* Format of the video frame */)
371
372 // Release all video frames allocated for a hardware video decoder.
373 IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_ReleaseAllVideoFrames)
374
375 // GpuVideoDecoder report output format change.
376 IPC_MESSAGE_ROUTED1(GpuVideoDecoderHostMsg_MediaFormatChange,
377 GpuVideoDecoderFormatChangeParam)
378
379 // GpuVideoDecoder report error.
380 IPC_MESSAGE_ROUTED1(GpuVideoDecoderHostMsg_ErrorNotification,
381 GpuVideoDecoderErrorInfoParam)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698