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

Side by Side Diff: content/common/gpu/gpu_command_buffer_stub.cc

Issue 1231263003: Share SyncPointManager between ipc and in-process (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove forward decl/includes Created 5 years, 5 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
« no previous file with comments | « content/common/gpu/gpu_channel_manager_unittest.cc ('k') | content/gpu/gpu_child_thread.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/bind_helpers.h" 6 #include "base/bind_helpers.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/hash.h" 8 #include "base/hash.h"
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/memory/shared_memory.h" 10 #include "base/memory/shared_memory.h"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 scoped_ptr<base::DictionaryValue> res(new base::DictionaryValue); 136 scoped_ptr<base::DictionaryValue> res(new base::DictionaryValue);
137 res->SetInteger("renderer_pid", channel->renderer_pid()); 137 res->SetInteger("renderer_pid", channel->renderer_pid());
138 res->SetDouble("used_bytes", channel->GetMemoryUsage()); 138 res->SetDouble("used_bytes", channel->GetMemoryUsage());
139 res->SetDouble("limit_bytes", 139 res->SetDouble("limit_bytes",
140 channel->gpu_channel_manager() 140 channel->gpu_channel_manager()
141 ->gpu_memory_manager() 141 ->gpu_memory_manager()
142 ->GetMaximumClientAllocation()); 142 ->GetMaximumClientAllocation());
143 return new DevToolsChannelData(res.release()); 143 return new DevToolsChannelData(res.release());
144 } 144 }
145 145
146 void RunOnThread(scoped_refptr<base::SingleThreadTaskRunner> task_runner,
147 const base::Closure& callback) {
148 if (task_runner->BelongsToCurrentThread()) {
149 callback.Run();
150 } else {
151 task_runner->PostTask(FROM_HERE, callback);
152 }
153 }
154
146 } // namespace 155 } // namespace
147 156
148 GpuCommandBufferStub::GpuCommandBufferStub( 157 GpuCommandBufferStub::GpuCommandBufferStub(
149 GpuChannel* channel, 158 GpuChannel* channel,
150 GpuCommandBufferStub* share_group, 159 GpuCommandBufferStub* share_group,
151 const gfx::GLSurfaceHandle& handle, 160 const gfx::GLSurfaceHandle& handle,
152 gpu::gles2::MailboxManager* mailbox_manager, 161 gpu::gles2::MailboxManager* mailbox_manager,
153 gpu::gles2::SubscriptionRefSet* subscription_ref_set, 162 gpu::gles2::SubscriptionRefSet* subscription_ref_set,
154 gpu::ValueStateMap* pending_valuebuffer_state, 163 gpu::ValueStateMap* pending_valuebuffer_state,
155 const gfx::Size& size, 164 const gfx::Size& size,
(...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 return true; 898 return true;
890 } 899 }
891 900
892 if (sync_point_wait_count_ == 0) { 901 if (sync_point_wait_count_ == 0) {
893 TRACE_EVENT_ASYNC_BEGIN1("gpu", "WaitSyncPoint", this, 902 TRACE_EVENT_ASYNC_BEGIN1("gpu", "WaitSyncPoint", this,
894 "GpuCommandBufferStub", this); 903 "GpuCommandBufferStub", this);
895 } 904 }
896 scheduler_->SetScheduled(false); 905 scheduler_->SetScheduled(false);
897 ++sync_point_wait_count_; 906 ++sync_point_wait_count_;
898 manager->sync_point_manager()->AddSyncPointCallback( 907 manager->sync_point_manager()->AddSyncPointCallback(
899 sync_point, base::Bind(&GpuCommandBufferStub::OnWaitSyncPointCompleted, 908 sync_point,
900 this->AsWeakPtr(), sync_point)); 909 base::Bind(&RunOnThread, base::ThreadTaskRunnerHandle::Get(),
910 base::Bind(&GpuCommandBufferStub::OnWaitSyncPointCompleted,
911 this->AsWeakPtr(), sync_point)));
901 return scheduler_->IsScheduled(); 912 return scheduler_->IsScheduled();
902 } 913 }
903 914
904 void GpuCommandBufferStub::OnWaitSyncPointCompleted(uint32 sync_point) { 915 void GpuCommandBufferStub::OnWaitSyncPointCompleted(uint32 sync_point) {
905 PullTextureUpdates(sync_point); 916 PullTextureUpdates(sync_point);
906 --sync_point_wait_count_; 917 --sync_point_wait_count_;
907 if (sync_point_wait_count_ == 0) { 918 if (sync_point_wait_count_ == 0) {
908 TRACE_EVENT_ASYNC_END1("gpu", "WaitSyncPoint", this, 919 TRACE_EVENT_ASYNC_END1("gpu", "WaitSyncPoint", this,
909 "GpuCommandBufferStub", this); 920 "GpuCommandBufferStub", this);
910 } 921 }
911 scheduler_->SetScheduled(true); 922 scheduler_->SetScheduled(true);
912 } 923 }
913 924
914 void GpuCommandBufferStub::PullTextureUpdates(uint32 sync_point) { 925 void GpuCommandBufferStub::PullTextureUpdates(uint32 sync_point) {
915 gpu::gles2::MailboxManager* mailbox_manager = 926 gpu::gles2::MailboxManager* mailbox_manager =
916 context_group_->mailbox_manager(); 927 context_group_->mailbox_manager();
917 if (mailbox_manager->UsesSync() && MakeCurrent()) 928 if (mailbox_manager->UsesSync() && MakeCurrent())
918 mailbox_manager->PullTextureUpdates(sync_point); 929 mailbox_manager->PullTextureUpdates(sync_point);
919 } 930 }
920 931
921 void GpuCommandBufferStub::OnSignalSyncPoint(uint32 sync_point, uint32 id) { 932 void GpuCommandBufferStub::OnSignalSyncPoint(uint32 sync_point, uint32 id) {
922 GpuChannelManager* manager = channel_->gpu_channel_manager(); 933 GpuChannelManager* manager = channel_->gpu_channel_manager();
923 manager->sync_point_manager()->AddSyncPointCallback( 934 manager->sync_point_manager()->AddSyncPointCallback(
924 sync_point, 935 sync_point,
925 base::Bind(&GpuCommandBufferStub::OnSignalSyncPointAck, 936 base::Bind(&RunOnThread, base::ThreadTaskRunnerHandle::Get(),
926 this->AsWeakPtr(), 937 base::Bind(&GpuCommandBufferStub::OnSignalSyncPointAck,
927 id)); 938 this->AsWeakPtr(), id)));
928 } 939 }
929 940
930 void GpuCommandBufferStub::OnSignalSyncPointAck(uint32 id) { 941 void GpuCommandBufferStub::OnSignalSyncPointAck(uint32 id) {
931 Send(new GpuCommandBufferMsg_SignalSyncPointAck(route_id_, id)); 942 Send(new GpuCommandBufferMsg_SignalSyncPointAck(route_id_, id));
932 } 943 }
933 944
934 void GpuCommandBufferStub::OnSignalQuery(uint32 query_id, uint32 id) { 945 void GpuCommandBufferStub::OnSignalQuery(uint32 query_id, uint32 id) {
935 if (decoder_) { 946 if (decoder_) {
936 gpu::gles2::QueryManager* query_manager = decoder_->GetQueryManager(); 947 gpu::gles2::QueryManager* query_manager = decoder_->GetQueryManager();
937 if (query_manager) { 948 if (query_manager) {
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
1149 result)); 1160 result));
1150 } 1161 }
1151 1162
1152 void GpuCommandBufferStub::SendUpdateVSyncParameters(base::TimeTicks timebase, 1163 void GpuCommandBufferStub::SendUpdateVSyncParameters(base::TimeTicks timebase,
1153 base::TimeDelta interval) { 1164 base::TimeDelta interval) {
1154 Send(new GpuCommandBufferMsg_UpdateVSyncParameters(route_id_, timebase, 1165 Send(new GpuCommandBufferMsg_UpdateVSyncParameters(route_id_, timebase,
1155 interval)); 1166 interval));
1156 } 1167 }
1157 1168
1158 } // namespace content 1169 } // namespace content
OLDNEW
« no previous file with comments | « content/common/gpu/gpu_channel_manager_unittest.cc ('k') | content/gpu/gpu_child_thread.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698