|
|
GPU: Adding sync points for cross-channel synchronization
Theory of operation: command buffer 1 calls InsertSyncPoint, it returns an ID,
command buffer 2 calls WaitSyncPoint on that ID (even if on another channel).
The wait is pipelined.
InsertSyncPoint is handled on the IO thread in the GPU process, so it's
presumably fast, but its effect is ordered wrt the other messages.
Some benefits of the approach:
- once InsertSyncPoint returns the ID, the sync point is already enqueued to be
eventually retired, so it makes it very hard to cause deadlocks by incorrect
operation on the client side.
- the wait will return if the command buffer that inserted the sync point gets
destroyed.
This primitive should be enough for guaranteeing browser->renderer ordering.
Additional changes are needed to safely handle renderer->browser ordering
(especially in case of buggy/malicious renderer).
BUG= 112299
TEST=manual (With other patches)
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=140653
Total comments: 16
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+339 lines, -7 lines) |
Patch |
 |
M |
content/common/gpu/client/command_buffer_proxy_impl.h
|
View
|
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/common/gpu/client/command_buffer_proxy_impl.cc
|
View
|
|
1 chunk |
+10 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h
|
View
|
|
1 chunk |
+3 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.cc
|
View
|
|
1 chunk |
+11 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/common/gpu/gpu_channel.cc
|
View
|
1
2
|
3 chunks |
+107 lines, -1 line |
0 comments
|
Download
|
 |
M |
content/common/gpu/gpu_channel_manager.h
|
View
|
|
3 chunks |
+4 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/common/gpu/gpu_channel_manager.cc
|
View
|
|
2 chunks |
+3 lines, -1 line |
0 comments
|
Download
|
 |
M |
content/common/gpu/gpu_command_buffer_stub.h
|
View
|
1
2
|
4 chunks |
+12 lines, -4 lines |
0 comments
|
Download
|
 |
M |
content/common/gpu/gpu_command_buffer_stub.cc
|
View
|
|
4 chunks |
+36 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/common/gpu/gpu_messages.h
|
View
|
|
1 chunk |
+17 lines, -0 lines |
0 comments
|
Download
|
 |
A |
content/common/gpu/sync_point_manager.h
|
View
|
1
2
|
1 chunk |
+54 lines, -0 lines |
0 comments
|
Download
|
 |
A |
content/common/gpu/sync_point_manager.cc
|
View
|
1
2
|
1 chunk |
+56 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/content_common.gypi
|
View
|
1
2
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/ipc/command_buffer_proxy.h
|
View
|
1
2
|
1 chunk |
+11 lines, -0 lines |
0 comments
|
Download
|
 |
M |
ppapi/proxy/ppapi_command_buffer_proxy.h
|
View
|
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
ppapi/proxy/ppapi_command_buffer_proxy.cc
|
View
|
|
2 chunks |
+9 lines, -1 line |
0 comments
|
Download
|
Total messages: 12 (0 generated)
|