OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Multiply-included message file, hence no include guard here, but see below | |
6 // for a much smaller-than-usual include guard section. | |
7 | |
5 #include <vector> | 8 #include <vector> |
6 #include <string> | 9 #include <string> |
7 | 10 |
8 | |
9 #include "base/shared_memory.h" | 11 #include "base/shared_memory.h" |
10 #include "content/common/common_param_traits.h" | 12 #include "content/common/common_param_traits.h" |
11 #include "content/common/gpu/gpu_info.h" | 13 #include "content/common/gpu/gpu_info.h" |
12 #include "content/common/gpu/gpu_process_launch_causes.h" | 14 #include "content/common/gpu/gpu_process_launch_causes.h" |
13 #include "gpu/command_buffer/common/command_buffer.h" | 15 #include "gpu/command_buffer/common/command_buffer.h" |
14 #include "gpu/ipc/gpu_command_buffer_traits.h" | 16 #include "gpu/ipc/gpu_command_buffer_traits.h" |
15 #include "ipc/ipc_channel_handle.h" | 17 #include "ipc/ipc_channel_handle.h" |
16 #include "ipc/ipc_message_macros.h" | 18 #include "ipc/ipc_message_macros.h" |
17 #include "ui/gfx/native_widget_types.h" | 19 #include "ui/gfx/native_widget_types.h" |
18 #include "ui/gfx/size.h" | 20 #include "ui/gfx/size.h" |
19 // Multiply-included message file, hence no include guard. | 21 |
22 // Singly-included section. | |
23 #ifndef CONTENT_COMMON_GPU_GPU_MESSAGES_H_ | |
24 #define CONTENT_COMMON_GPU_GPU_MESSAGES_H_ | |
25 // typedef is required because commas confuse IPC_MESSAGE_* macro expansions. | |
26 // Pair contains: first: last_token_read, second: last_token_written. | |
piman
2011/06/28 01:19:22
You can make an IPC_STRUCT which implements the pi
Ami GONE FROM CHROMIUM
2011/06/28 21:00:53
Done.
| |
27 typedef std::pair<int32, int32> ReadWriteTokens; | |
28 #endif // CONTENT_COMMON_GPU_GPU_MESSAGES_H_ | |
20 | 29 |
21 #define IPC_MESSAGE_START GpuMsgStart | 30 #define IPC_MESSAGE_START GpuMsgStart |
22 | 31 |
23 IPC_STRUCT_BEGIN(GPUCreateCommandBufferConfig) | 32 IPC_STRUCT_BEGIN(GPUCreateCommandBufferConfig) |
24 IPC_STRUCT_MEMBER(std::string, allowed_extensions) | 33 IPC_STRUCT_MEMBER(std::string, allowed_extensions) |
25 IPC_STRUCT_MEMBER(std::vector<int>, attribs) | 34 IPC_STRUCT_MEMBER(std::vector<int>, attribs) |
26 IPC_STRUCT_MEMBER(GURL, active_url) | 35 IPC_STRUCT_MEMBER(GURL, active_url) |
27 IPC_STRUCT_END() | 36 IPC_STRUCT_END() |
28 | 37 |
29 #if defined(OS_MACOSX) | 38 #if defined(OS_MACOSX) |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
298 | 307 |
299 // Create a surface for offscreen rendering. | 308 // Create a surface for offscreen rendering. |
300 IPC_SYNC_MESSAGE_CONTROL1_1(GpuChannelMsg_CreateOffscreenSurface, | 309 IPC_SYNC_MESSAGE_CONTROL1_1(GpuChannelMsg_CreateOffscreenSurface, |
301 gfx::Size, /* size */ | 310 gfx::Size, /* size */ |
302 int /* route_id */) | 311 int /* route_id */) |
303 | 312 |
304 // Destroy a surface by routing id. | 313 // Destroy a surface by routing id. |
305 IPC_MESSAGE_CONTROL1(GpuChannelMsg_DestroySurface, | 314 IPC_MESSAGE_CONTROL1(GpuChannelMsg_DestroySurface, |
306 int /* route_id */) | 315 int /* route_id */) |
307 | 316 |
308 // Create hardware video decoder && associate it with the output |decoder_id|; | 317 // Create a hardware video decoder; the new route ID is returned through |
318 // AcceleratedVideoDecoderHostMsg_CreateDone. | |
309 // We need this to be control message because we had to map the GpuChannel and | 319 // We need this to be control message because we had to map the GpuChannel and |
310 // |decoder_id|. | 320 // |decoder_id|. |
311 IPC_MESSAGE_CONTROL3(GpuChannelMsg_CreateVideoDecoder, | 321 IPC_MESSAGE_CONTROL3(GpuChannelMsg_CreateVideoDecoder, |
312 int32, /* decoder_id */ | 322 int32, /* decoder_host_id */ |
313 uint32, /* command buffer route id*/ | 323 uint32, /* command buffer route id*/ |
314 std::vector<uint32>) /* configs */ | 324 std::vector<uint32>) /* configs */ |
315 | 325 |
316 // Release all resource of the hardware video decoder which was assocaited | 326 // Release all resource of the hardware video decoder which was assocaited |
317 // with the input |decoder_id|. | 327 // with the input |decoder_id|. |
318 // TODO(hclam): This message needs to be asynchronous. | 328 // TODO(hclam): This message needs to be asynchronous. |
319 IPC_SYNC_MESSAGE_CONTROL1_0(GpuChannelMsg_DestroyVideoDecoder, | 329 IPC_SYNC_MESSAGE_CONTROL1_0(GpuChannelMsg_DestroyVideoDecoder, |
320 int32 /* decoder_id */) | 330 int32 /* decoder_id */) |
321 | 331 |
322 // Create a TransportTexture corresponding to |host_id|. | 332 // Create a TransportTexture corresponding to |host_id|. |
323 IPC_MESSAGE_CONTROL2(GpuChannelMsg_CreateTransportTexture, | 333 IPC_MESSAGE_CONTROL2(GpuChannelMsg_CreateTransportTexture, |
324 int32, /* context_route_id */ | 334 int32, /* context_route_id */ |
325 int32 /* host_id */) | 335 int32 /* host_id */) |
326 | 336 |
327 // Sent from Renderer process to the GPU process to give the texture IDs for | |
328 // the textures the decoder will use for output. | |
329 IPC_MESSAGE_CONTROL4(GpuChannelMsg_AssignTexturesToVideoDecoder, | |
330 int32, /* Decoder ID */ | |
331 std::vector<int32>, /* Picture buffer ID */ | |
332 std::vector<uint32>, /* Texture ID */ | |
333 std::vector<gfx::Size>) /* Size */ | |
334 //------------------------------------------------------------------------------ | 337 //------------------------------------------------------------------------------ |
335 // GPU Command Buffer Messages | 338 // GPU Command Buffer Messages |
336 // These are messages between a renderer process to the GPU process relating to | 339 // These are messages between a renderer process to the GPU process relating to |
337 // a single OpenGL context. | 340 // a single OpenGL context. |
338 // Initialize a command buffer with the given number of command entries. | 341 // Initialize a command buffer with the given number of command entries. |
339 // Returns the shared memory handle for the command buffer mapped to the | 342 // Returns the shared memory handle for the command buffer mapped to the |
340 // calling process. | 343 // calling process. |
341 IPC_SYNC_MESSAGE_ROUTED2_1(GpuCommandBufferMsg_Initialize, | 344 IPC_SYNC_MESSAGE_ROUTED2_1(GpuCommandBufferMsg_Initialize, |
342 base::SharedMemoryHandle /* ring_buffer */, | 345 base::SharedMemoryHandle /* ring_buffer */, |
343 int32 /* size */, | 346 int32 /* size */, |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
456 // Instruct the renderer to release all generated textures. | 459 // Instruct the renderer to release all generated textures. |
457 IPC_MESSAGE_ROUTED0(GpuTransportTextureHostMsg_ReleaseTextures) | 460 IPC_MESSAGE_ROUTED0(GpuTransportTextureHostMsg_ReleaseTextures) |
458 | 461 |
459 // Notify a texture has been updated. The texture id is in the client context. | 462 // Notify a texture has been updated. The texture id is in the client context. |
460 IPC_MESSAGE_ROUTED1(GpuTransportTextureHostMsg_TextureUpdated, | 463 IPC_MESSAGE_ROUTED1(GpuTransportTextureHostMsg_TextureUpdated, |
461 int /* texture_id */) | 464 int /* texture_id */) |
462 | 465 |
463 //------------------------------------------------------------------------------ | 466 //------------------------------------------------------------------------------ |
464 // Accelerated Video Decoder Messages | 467 // Accelerated Video Decoder Messages |
465 // These messages are sent from Renderer process to GPU process. | 468 // These messages are sent from Renderer process to GPU process. |
469 // | |
470 // Most of these messages defer execution until |tokens.second| is seen (using | |
471 // |tokens.first| as a wrap-around indicator). | |
472 | |
466 // Message to query configuration information from the GPU process. | 473 // Message to query configuration information from the GPU process. |
467 IPC_SYNC_MESSAGE_CONTROL1_1(AcceleratedVideoDecoderMsg_GetConfigs, | 474 IPC_SYNC_MESSAGE_CONTROL2_1(AcceleratedVideoDecoderMsg_GetConfigs, |
475 ReadWriteTokens, /* tokens: <read,write> */ | |
468 std::vector<uint32>, /* Proto config */ | 476 std::vector<uint32>, /* Proto config */ |
469 std::vector<uint32>) /* Matching configs */ | 477 std::vector<uint32>) /* Matching configs */ |
470 | 478 |
471 // Message to initialize the accelerated video decoder. | 479 // Message to initialize the accelerated video decoder. |
472 IPC_MESSAGE_ROUTED1(AcceleratedVideoDecoderMsg_Initialize, | 480 IPC_MESSAGE_ROUTED2(AcceleratedVideoDecoderMsg_Initialize, |
481 ReadWriteTokens, /* tokens: <read,write> */ | |
473 std::vector<uint32>) /* Config */ | 482 std::vector<uint32>) /* Config */ |
474 | 483 |
475 // Send input buffer for decoding. | 484 // Send input buffer for decoding. |
476 IPC_MESSAGE_ROUTED3(AcceleratedVideoDecoderMsg_Decode, | 485 IPC_MESSAGE_ROUTED4(AcceleratedVideoDecoderMsg_Decode, |
486 ReadWriteTokens, /* tokens: <read,write> */ | |
487 base::SharedMemoryHandle, /* input_buffer_handle */ | |
477 int32, /* bitstream_buffer_id */ | 488 int32, /* bitstream_buffer_id */ |
478 base::SharedMemoryHandle, /* input_buffer_handle */ | |
479 int32) /* size */ | 489 int32) /* size */ |
480 | 490 |
491 // Sent from Renderer process to the GPU process to give the texture IDs for | |
492 // the textures the decoder will use for output. Delays evaluation until | |
493 // |token.second| is seen. | |
494 IPC_MESSAGE_ROUTED4(AcceleratedVideoDecoderMsg_AssignTextures, | |
495 ReadWriteTokens, /* tokens: <read,write> */ | |
496 std::vector<int32>, /* Picture buffer ID */ | |
497 std::vector<uint32>, /* Texture ID */ | |
498 std::vector<gfx::Size>) /* Size */ | |
499 | |
481 // Sent from Renderer process to the GPU process to give the system memory | 500 // Sent from Renderer process to the GPU process to give the system memory |
482 // buffers that the decoder will use for output. | 501 // buffers that the decoder will use for output. |
483 // | 502 // |
484 // The length of the list of SharedMemoryHandles cannot exceed | 503 // The length of the list of SharedMemoryHandles cannot exceed |
485 // FileDescriptorSet::MAX_DESCRIPTORS_PER_MESSAGE; see | 504 // FileDescriptorSet::MAX_DESCRIPTORS_PER_MESSAGE; see |
486 // ipc/file_descriptor_set_posix. | 505 // ipc/file_descriptor_set_posix. |
487 IPC_MESSAGE_ROUTED3(AcceleratedVideoDecoderMsg_AssignSysmemBuffers, | 506 IPC_MESSAGE_ROUTED4(AcceleratedVideoDecoderMsg_AssignSysmemBuffers, |
507 ReadWriteTokens, /* tokens: <read,write> */ | |
488 std::vector<int32>, /* Picture buffer ID */ | 508 std::vector<int32>, /* Picture buffer ID */ |
489 std::vector<base::SharedMemoryHandle>, /* Sysmem buffer */ | 509 std::vector<base::SharedMemoryHandle>, /* Sysmem buffer */ |
490 std::vector<gfx::Size>) /* Size */ | 510 std::vector<gfx::Size>) /* Size */ |
491 | 511 |
492 // Send from Renderer process to the GPU process to recycle the given picture | 512 // Send from Renderer process to the GPU process to recycle the given picture |
493 // buffer for further decoding. | 513 // buffer for further decoding. |
494 IPC_MESSAGE_ROUTED1(AcceleratedVideoDecoderMsg_ReusePictureBuffer, | 514 IPC_MESSAGE_ROUTED2(AcceleratedVideoDecoderMsg_ReusePictureBuffer, |
515 ReadWriteTokens, /* tokens: <read,write> */ | |
495 int32) /* Picture buffer ID */ | 516 int32) /* Picture buffer ID */ |
496 | 517 |
497 // Send flush request to the decoder. | 518 // Send flush request to the decoder. |
498 IPC_MESSAGE_ROUTED0(AcceleratedVideoDecoderMsg_Flush) | 519 IPC_MESSAGE_ROUTED1(AcceleratedVideoDecoderMsg_Flush, |
520 ReadWriteTokens) /* tokens: <read,write> */ | |
499 | 521 |
500 // Send abort request to the decoder. | 522 // Send abort request to the decoder. |
501 IPC_MESSAGE_ROUTED0(AcceleratedVideoDecoderMsg_Abort) | 523 IPC_MESSAGE_ROUTED1(AcceleratedVideoDecoderMsg_Abort, |
524 ReadWriteTokens) /* tokens: <read,write> */ | |
502 | 525 |
503 // Destroy and release decoder asynchronously. | 526 // Destroy and release decoder asynchronously. |
504 IPC_SYNC_MESSAGE_CONTROL0_0(AcceleratedVideoDecoderMsg_Destroy) | 527 IPC_SYNC_MESSAGE_CONTROL1_0(AcceleratedVideoDecoderMsg_Destroy, |
528 ReadWriteTokens) /* tokens: <read,write> */ | |
505 | 529 |
506 //------------------------------------------------------------------------------ | 530 //------------------------------------------------------------------------------ |
507 // Accelerated Video Decoder Host Messages | 531 // Accelerated Video Decoder Host Messages |
508 // These messages are sent from GPU process to Renderer process. | 532 // These messages are sent from GPU process to Renderer process. |
509 // Inform AcceleratedVideoDecoderHost that AcceleratedVideoDecoder has been | 533 // Inform AcceleratedVideoDecoderHost that AcceleratedVideoDecoder has been |
510 // created. | 534 // created. |
511 | 535 |
512 // Accelerated video decoder has consumed input buffer from transfer buffer. | 536 // Accelerated video decoder has consumed input buffer from transfer buffer. |
513 IPC_MESSAGE_ROUTED1(AcceleratedVideoDecoderHostMsg_BitstreamBufferProcessed, | 537 IPC_MESSAGE_ROUTED1(AcceleratedVideoDecoderHostMsg_BitstreamBufferProcessed, |
514 int32) /* Processed buffer ID */ | 538 int32) /* Processed buffer ID */ |
(...skipping 28 matching lines...) Expand all Loading... | |
543 | 567 |
544 // Confirm decoder has been aborted. | 568 // Confirm decoder has been aborted. |
545 IPC_MESSAGE_ROUTED0(AcceleratedVideoDecoderHostMsg_AbortDone) | 569 IPC_MESSAGE_ROUTED0(AcceleratedVideoDecoderHostMsg_AbortDone) |
546 | 570 |
547 // Decoder has faced end of stream marker in the stream. | 571 // Decoder has faced end of stream marker in the stream. |
548 IPC_MESSAGE_ROUTED0(AcceleratedVideoDecoderHostMsg_EndOfStream) | 572 IPC_MESSAGE_ROUTED0(AcceleratedVideoDecoderHostMsg_EndOfStream) |
549 | 573 |
550 // Video decoder has encountered an error. | 574 // Video decoder has encountered an error. |
551 IPC_MESSAGE_ROUTED1(AcceleratedVideoDecoderHostMsg_ErrorNotification, | 575 IPC_MESSAGE_ROUTED1(AcceleratedVideoDecoderHostMsg_ErrorNotification, |
552 uint32) /* Error ID */ | 576 uint32) /* Error ID */ |
OLD | NEW |