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

Unified Diff: chrome/common/gpu_messages.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 side-by-side diff with in-line comments
Download patch
Index: chrome/common/gpu_messages.h
===================================================================
--- chrome/common/gpu_messages.h (revision 77320)
+++ chrome/common/gpu_messages.h (working copy)
@@ -2,17 +2,403 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_COMMON_GPU_MESSAGES_H_
-#define CHROME_COMMON_GPU_MESSAGES_H_
-#pragma once
+// Multiply-included file, hence no traditional include guard
+#include <string>
+#include <vector>
+
#include "base/basictypes.h"
#include "base/process.h"
+#include "base/shared_memory.h"
+#include "base/string_piece.h"
+#include "base/sys_string_conversions.h"
#include "chrome/common/common_param_traits.h"
+#include "chrome/common/dx_diag_node.h"
+#include "chrome/common/gpu_create_command_buffer_config.h"
+#include "chrome/common/gpu_info.h"
#include "chrome/common/gpu_param_traits.h"
+#include "chrome/common/gpu_video_common.h"
#include "gpu/command_buffer/common/command_buffer.h"
+#include "ipc/ipc_channel_handle.h"
+#include "ipc/ipc_message_macros.h"
#include "ui/gfx/native_widget_types.h"
+#include "ui/gfx/rect.h"
+#include "ui/gfx/size.h"
-#include "chrome/common/gpu_messages_internal.h"
+#define IPC_MESSAGE_START GpuMsgStart
+// Singly-included portion not yet converted
+#ifndef CHROME_COMMON_GPU_MESSAGES_H_
+#define CHROME_COMMON_GPU_MESSAGES_H_
+
+namespace gfx {
jam 2011/03/09 06:33:45 nit: looks like these four forward declarations ar
+class Size;
+}
+
+namespace IPC {
+struct ChannelHandle;
+}
+
+struct GPUCreateCommandBufferConfig;
+struct GPUInfo;
+
#endif // CHROME_COMMON_GPU_MESSAGES_H_
+
+//------------------------------------------------------------------------------
+// GPU Messages
+// These are messages from the browser to the GPU process.
+
+// Tells the GPU process to initialize itself. The browser explicitly
+// requests this be done so that we are guaranteed that the channel is set
+// up between the browser and GPU process before doing any work that might
+// potentially crash the GPU process. Detection of the child process
+// exiting abruptly is predicated on having the IPC channel set up.
+IPC_MESSAGE_CONTROL0(GpuMsg_Initialize)
+
+// Tells the GPU process to create a new channel for communication with a
+// given renderer. The channel name is returned in a
+// GpuHostMsg_ChannelEstablished message. The renderer ID is passed so that
+// the GPU process reuses an existing channel to that process if it exists.
+// This ID is a unique opaque identifier generated by the browser process.
+IPC_MESSAGE_CONTROL1(GpuMsg_EstablishChannel,
+ int /* renderer_id */)
+
+// Tells the GPU process to close the channel identified by IPC channel
+// handle. If no channel can be identified, do nothing.
+IPC_MESSAGE_CONTROL1(GpuMsg_CloseChannel,
+ IPC::ChannelHandle /* channel_handle */)
+
+// Provides a synchronization point to guarantee that the processing of
+// previous asynchronous messages (i.e., GpuMsg_EstablishChannel) has
+// completed. (This message can't be synchronous because the
+// GpuProcessHost uses an IPC::ChannelProxy, which sends all messages
+// asynchronously.) Results in a GpuHostMsg_SynchronizeReply.
+IPC_MESSAGE_CONTROL0(GpuMsg_Synchronize)
+
+// Tells the GPU process to create a new command buffer that renders directly
+// to a native view. A corresponding GpuCommandBufferStub is created.
+IPC_MESSAGE_CONTROL4(GpuMsg_CreateViewCommandBuffer,
+ gfx::PluginWindowHandle, /* view */
+ int32, /* render_view_id */
+ int32, /* renderer_id */
+ GPUCreateCommandBufferConfig /* init_params */)
+
+// Tells the GPU process to create a context for collecting graphics card
+// information.
+IPC_MESSAGE_CONTROL1(GpuMsg_CollectGraphicsInfo,
+ GPUInfo::Level /* level */)
+
+#if defined(OS_MACOSX)
+// Tells the GPU process that the browser process handled the swap
+// buffers request with the given number. Note that it is possible
+// for the browser process to coalesce frames; it is not guaranteed
+// that every GpuHostMsg_AcceleratedSurfaceBuffersSwapped message
+// will result in a buffer swap on the browser side.
+IPC_MESSAGE_CONTROL3(GpuMsg_AcceleratedSurfaceBuffersSwappedACK,
+ int /* renderer_id */,
+ int32 /* route_id */,
+ uint64 /* swap_buffers_count */)
+
+// Tells the GPU process that the IOSurface of the buffer belonging to
+// |renderer_route_id| a given id was destroyed, either by the user closing the
+// tab hosting the surface, or by the renderer navigating to a new page.
+IPC_MESSAGE_CONTROL2(GpuMsg_DidDestroyAcceleratedSurface,
+ int /* renderer_id */,
+ int32 /* renderer_route_id */)
+#endif
+
+// Tells the GPU process to crash.
+IPC_MESSAGE_CONTROL0(GpuMsg_Crash)
+
+// Tells the GPU process to hang.
+IPC_MESSAGE_CONTROL0(GpuMsg_Hang)
+
+//------------------------------------------------------------------------------
+// GPU Host Messages
+// These are messages to the browser.
+
+// A renderer sends this when it wants to create a connection to the GPU
+// process. The browser will create the GPU process if necessary, and will
+// return a handle to the channel via a GpuChannelEstablished message.
+IPC_MESSAGE_CONTROL0(GpuHostMsg_EstablishGpuChannel)
+
+// A renderer sends this to the browser process to provide a synchronization
+// point for GPU operations, in particular to make sure the GPU channel has
+// been established.
+IPC_SYNC_MESSAGE_CONTROL0_0(GpuHostMsg_SynchronizeGpu)
+
+// A renderer sends this to the browser process when it wants to
+// create a GL context associated with the given view_id.
+IPC_SYNC_MESSAGE_CONTROL2_1(GpuHostMsg_CreateViewCommandBuffer,
+ int32, /* render_view_id */
+ GPUCreateCommandBufferConfig, /* init_params */
+ int32 /* route_id */)
+
+// Response from GPU to a GpuHostMsg_EstablishChannel message.
+IPC_MESSAGE_CONTROL2(GpuHostMsg_ChannelEstablished,
+ IPC::ChannelHandle, /* channel_handle */
+ GPUInfo /* GPU logging stats */)
+
+// Respond from GPU to a GpuMsg_CreateViewCommandBuffer message.
+IPC_MESSAGE_CONTROL1(GpuHostMsg_CommandBufferCreated,
+ int32 /* route_id */)
+
+// Request from GPU to free the browser resources associated with the
+// command buffer.
+IPC_MESSAGE_CONTROL3(GpuHostMsg_DestroyCommandBuffer,
+ gfx::PluginWindowHandle, /* view */
+ int32, /* render_view_id */
+ int32 /* renderer_id */)
+
+// Response from GPU to a GpuMsg_CollectGraphicsInfo.
+IPC_MESSAGE_CONTROL1(GpuHostMsg_GraphicsInfoCollected,
+ GPUInfo /* GPU logging stats */)
+
+// Message from GPU to add a GPU log message to the about:gpu page.
+IPC_MESSAGE_CONTROL3(GpuHostMsg_OnLogMessage,
+ int /*severity*/,
+ std::string /* header */,
+ std::string /* message */)
+
+// Response from GPU to a GpuMsg_Synchronize message.
+IPC_MESSAGE_CONTROL0(GpuHostMsg_SynchronizeReply)
+
+#if defined(OS_LINUX) && !defined(TOUCH_UI)
+// Resize the window that is being drawn into. It's important that this
+// resize be synchronized with the swapping of the front and back buffers.
+IPC_SYNC_MESSAGE_CONTROL2_1(GpuHostMsg_ResizeXID,
+ unsigned long, /* xid */
+ gfx::Size, /* size */
+ bool /* success */)
+#elif defined(OS_MACOSX)
+// This message, used on Mac OS X 10.6 and later (where IOSurface is
+// supported), is sent from the GPU process to the browser to indicate that a
+// new backing store was allocated for the given "window" (fake
+// PluginWindowHandle). The renderer ID and render view ID are needed in
+// order to uniquely identify the RenderWidgetHostView on the browser side.
+IPC_MESSAGE_CONTROL1(GpuHostMsg_AcceleratedSurfaceSetIOSurface,
+ GpuHostMsg_AcceleratedSurfaceSetIOSurface_Params)
+
+// This message notifies the browser process that the renderer
+// swapped the buffers associated with the given "window", which
+// should cause the browser to redraw the compositor's contents.
+IPC_MESSAGE_CONTROL1(GpuHostMsg_AcceleratedSurfaceBuffersSwapped,
+ GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params)
+#elif defined(OS_WIN)
+IPC_MESSAGE_CONTROL2(GpuHostMsg_ScheduleComposite,
+ int32, /* renderer_id */
+ int32 /* render_view_id */)
+#endif
+
+//------------------------------------------------------------------------------
+// GPU Channel Messages
+// These are messages from a renderer process to the GPU process.
+
+// Initialize a channel between a renderer process and a GPU process. The
+// renderer passes its process handle to the GPU process, which gives gives the
+// GPU process the ability to map handles from the renderer process. This must
+// be the first message sent on a newly connected channel.
+IPC_MESSAGE_CONTROL1(GpuChannelMsg_Initialize,
+ base::ProcessHandle /* renderer_process_for_gpu */)
+
+// Tells the GPU process to create a new command buffer that renders to an
+// offscreen frame buffer. If parent_route_id is not zero, the texture backing
+// the frame buffer is mapped into the corresponding parent command buffer's
+// namespace, with the name of parent_texture_id. This ID is in the parent's
+// namespace.
+IPC_SYNC_MESSAGE_CONTROL4_1(GpuChannelMsg_CreateOffscreenCommandBuffer,
+ int32, /* parent_route_id */
+ gfx::Size, /* size */
+ GPUCreateCommandBufferConfig, /* init_params */
+ uint32, /* parent_texture_id */
+ int32 /* route_id */)
+
+// The CommandBufferProxy sends this to the GpuCommandBufferStub in its
+// destructor, so that the stub deletes the actual CommandBufferService
+// object that it's hosting.
+// TODO(apatrick): Implement this.
+IPC_SYNC_MESSAGE_CONTROL1_0(GpuChannelMsg_DestroyCommandBuffer,
+ int32 /* instance_id */)
+
+// Create hardware video decoder && associate it with the output |decoder_id|;
+// We need this to be control message because we had to map the GpuChannel and
+// |decoder_id|.
+IPC_MESSAGE_CONTROL2(GpuChannelMsg_CreateVideoDecoder,
+ int32, /* context_route_id */
+ int32) /* decoder_id */
+
+// Release all resource of the hardware video decoder which was assocaited
+// with the input |decoder_id|.
+// TODO(hclam): This message needs to be asynchronous.
+IPC_SYNC_MESSAGE_CONTROL1_0(GpuChannelMsg_DestroyVideoDecoder,
+ int32 /* decoder_id */)
+
+//------------------------------------------------------------------------------
+// GPU Command Buffer Messages
+// These are messages between a renderer process to the GPU process relating to
+// a single OpenGL context.
+// Initialize a command buffer with the given number of command entries.
+// Returns the shared memory handle for the command buffer mapped to the
+// calling process.
+IPC_SYNC_MESSAGE_ROUTED2_1(GpuCommandBufferMsg_Initialize,
+ base::SharedMemoryHandle /* ring_buffer */,
+ int32 /* size */,
+ bool /* result */)
+
+// Get the current state of the command buffer.
+IPC_SYNC_MESSAGE_ROUTED0_1(GpuCommandBufferMsg_GetState,
+ gpu::CommandBuffer::State /* state */)
+
+// Get the current state of the command buffer asynchronously. State is
+// returned via UpdateState message.
+IPC_MESSAGE_ROUTED0(GpuCommandBufferMsg_AsyncGetState)
+
+// Synchronize the put and get offsets of both processes. Caller passes its
+// current put offset. Current state (including get offset) is returned.
+IPC_SYNC_MESSAGE_ROUTED1_1(GpuCommandBufferMsg_Flush,
+ int32 /* put_offset */,
+ gpu::CommandBuffer::State /* state */)
+
+// Asynchronously synchronize the put and get offsets of both processes.
+// Caller passes its current put offset. Current state (including get offset)
+// is returned via an UpdateState message.
+IPC_MESSAGE_ROUTED1(GpuCommandBufferMsg_AsyncFlush,
+ int32 /* put_offset */)
+
+// Return the current state of the command buffer following a request via
+// an AsyncGetState or AsyncFlush message. (This message is sent from the
+// GPU process to the renderer process.)
+IPC_MESSAGE_ROUTED1(GpuCommandBufferMsg_UpdateState,
+ gpu::CommandBuffer::State /* state */)
+
+// Indicates that a SwapBuffers call has been issued.
+IPC_MESSAGE_ROUTED0(GpuCommandBufferMsg_SwapBuffers)
+
+// Create a shared memory transfer buffer. Returns an id that can be used to
+// identify the transfer buffer from a comment.
+IPC_SYNC_MESSAGE_ROUTED1_1(GpuCommandBufferMsg_CreateTransferBuffer,
+ int32 /* size */,
+ int32 /* id */)
+
+// Register an existing shared memory transfer buffer. Returns an id that can be
+// used to identify the transfer buffer from a command buffer.
+IPC_SYNC_MESSAGE_ROUTED2_1(GpuCommandBufferMsg_RegisterTransferBuffer,
+ base::SharedMemoryHandle /* transfer_buffer */,
+ size_t /* size */,
+ int32 /* id */)
+
+// Destroy a previously created transfer buffer.
+IPC_SYNC_MESSAGE_ROUTED1_0(GpuCommandBufferMsg_DestroyTransferBuffer,
+ int32 /* id */)
+
+// Get the shared memory handle for a transfer buffer mapped to the callers
+// process.
+IPC_SYNC_MESSAGE_ROUTED1_2(GpuCommandBufferMsg_GetTransferBuffer,
+ int32 /* id */,
+ base::SharedMemoryHandle /* transfer_buffer */,
+ uint32 /* size */)
+
+// Send from command buffer stub to proxy when window is invalid and must be
+// repainted.
+IPC_MESSAGE_ROUTED0(GpuCommandBufferMsg_NotifyRepaint)
+
+// Tells the GPU process to resize an offscreen frame buffer.
+IPC_MESSAGE_ROUTED1(GpuCommandBufferMsg_ResizeOffscreenFrameBuffer,
+ gfx::Size /* size */)
+
+#if defined(OS_MACOSX)
+// On Mac OS X the GPU plugin must be offscreen, because there is no
+// true cross-process window hierarchy. For this reason we must send
+// resize events explicitly to the command buffer stub so it can
+// reallocate its backing store and send the new one back to the
+// browser. This message is currently used only on 10.6 and later.
+IPC_MESSAGE_ROUTED1(GpuCommandBufferMsg_SetWindowSize,
+ gfx::Size /* size */)
+#endif
+
+//------------------------------------------------------------------------------
+// GPU Video Decoder Messages
+// These messages are sent from Renderer process to GPU process.
+// Initialize and configure GpuVideoDecoder asynchronously.
+IPC_MESSAGE_ROUTED1(GpuVideoDecoderMsg_Initialize,
+ GpuVideoDecoderInitParam)
+
+// Destroy and release GpuVideoDecoder asynchronously.
+IPC_MESSAGE_ROUTED0(GpuVideoDecoderMsg_Destroy)
+
+// Start decoder flushing operation.
+IPC_MESSAGE_ROUTED0(GpuVideoDecoderMsg_Flush)
+
+// Tell the decoder to start prerolling.
+IPC_MESSAGE_ROUTED0(GpuVideoDecoderMsg_Preroll)
+
+// Send input buffer to GpuVideoDecoder.
+IPC_MESSAGE_ROUTED1(GpuVideoDecoderMsg_EmptyThisBuffer,
+ GpuVideoDecoderInputBufferParam)
+
+// Ask the GPU process to produce a video frame with the ID.
+IPC_MESSAGE_ROUTED1(GpuVideoDecoderMsg_ProduceVideoFrame,
+ int32) /* Video Frame ID */
+
+// Sent from Renderer process to the GPU process to notify that textures are
+// generated for a video frame.
+IPC_MESSAGE_ROUTED2(GpuVideoDecoderMsg_VideoFrameAllocated,
+ int32, /* Video Frame ID */
+ std::vector<uint32>) /* Textures for video frame */
+
+//------------------------------------------------------------------------------
+// GPU Video Decoder Host Messages
+// These messages are sent from GPU process to Renderer process.
+// Inform GpuVideoDecoderHost that a GpuVideoDecoder is created.
+IPC_MESSAGE_ROUTED1(GpuVideoDecoderHostMsg_CreateVideoDecoderDone,
+ int32) /* decoder_id */
+
+// Confirm GpuVideoDecoder had been initialized or failed to initialize.
+// TODO(hclam): Change this to Done instead of ACK.
+IPC_MESSAGE_ROUTED1(GpuVideoDecoderHostMsg_InitializeACK,
+ GpuVideoDecoderInitDoneParam)
+
+// Confrim GpuVideoDecoder had been destroyed properly.
+// TODO(hclam): Change this to Done instead of ACK.
+IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_DestroyACK)
+
+// Confirm decoder had been flushed.
+// TODO(hclam): Change this to Done instead of ACK.
+IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_FlushACK)
+
+// Confirm preroll operation is done.
+IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_PrerollDone)
+
+// GpuVideoDecoder has consumed input buffer from transfer buffer.
+// TODO(hclam): Change this to Done instead of ACK.
+IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_EmptyThisBufferACK)
+
+// GpuVideoDecoder require new input buffer.
+IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_EmptyThisBufferDone)
+
+// GpuVideoDecoder reports that a video frame is ready to be consumed.
+IPC_MESSAGE_ROUTED4(GpuVideoDecoderHostMsg_ConsumeVideoFrame,
+ int32, /* Video Frame ID */
+ int64, /* Timestamp in microseconds */
+ int64, /* Duration in microseconds */
+ int32) /* Flags */
+
+// Allocate video frames for output of the hardware video decoder.
+IPC_MESSAGE_ROUTED4(GpuVideoDecoderHostMsg_AllocateVideoFrames,
+ int32, /* Number of video frames to generate */
+ uint32, /* Width of the video frame */
+ uint32, /* Height of the video frame */
+ int32 /* Format of the video frame */)
+
+// Release all video frames allocated for a hardware video decoder.
+IPC_MESSAGE_ROUTED0(GpuVideoDecoderHostMsg_ReleaseAllVideoFrames)
+
+// GpuVideoDecoder report output format change.
+IPC_MESSAGE_ROUTED1(GpuVideoDecoderHostMsg_MediaFormatChange,
+ GpuVideoDecoderFormatChangeParam)
+
+// GpuVideoDecoder report error.
+IPC_MESSAGE_ROUTED1(GpuVideoDecoderHostMsg_ErrorNotification,
+ GpuVideoDecoderErrorInfoParam)
+
+
jam 2011/03/09 06:33:45 nit: extra line

Powered by Google App Engine
This is Rietveld 408576698