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

Side by Side Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 780133002: Add optimization for CHROMIUM_subscribe_uniform extension. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: piman@ review 3 Created 6 years 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
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 // Represents the browser side of the browser <--> renderer communication 5 // Represents the browser side of the browser <--> renderer communication
6 // channel. There will be one RenderProcessHost per renderer process. 6 // channel. There will be one RenderProcessHost per renderer process.
7 7
8 #include "content/browser/renderer_host/render_process_host_impl.h" 8 #include "content/browser/renderer_host/render_process_host_impl.h"
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 storage_partition_impl_(storage_partition_impl), 450 storage_partition_impl_(storage_partition_impl),
451 sudden_termination_allowed_(true), 451 sudden_termination_allowed_(true),
452 ignore_input_events_(false), 452 ignore_input_events_(false),
453 is_isolated_guest_(is_isolated_guest), 453 is_isolated_guest_(is_isolated_guest),
454 gpu_observer_registered_(false), 454 gpu_observer_registered_(false),
455 delayed_cleanup_needed_(false), 455 delayed_cleanup_needed_(false),
456 within_process_died_observer_(false), 456 within_process_died_observer_(false),
457 power_monitor_broadcaster_(this), 457 power_monitor_broadcaster_(this),
458 worker_ref_count_(0), 458 worker_ref_count_(0),
459 permission_service_context_(new PermissionServiceContext(this)), 459 permission_service_context_(new PermissionServiceContext(this)),
460 pending_valuebuffer_state_(new gpu::ValueStateMap()),
461 subscribe_uniform_enabled_(false),
460 weak_factory_(this) { 462 weak_factory_(this) {
461 widget_helper_ = new RenderWidgetHelper(); 463 widget_helper_ = new RenderWidgetHelper();
462 464
463 ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID()); 465 ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID());
464 466
465 CHECK(!g_exited_main_message_loop); 467 CHECK(!g_exited_main_message_loop);
466 RegisterHost(GetID(), this); 468 RegisterHost(GetID(), this);
467 g_all_hosts.Get().set_check_on_null_data(true); 469 g_all_hosts.Get().set_check_on_null_data(true);
468 // Initialize |child_process_activity_time_| to a reasonable value. 470 // Initialize |child_process_activity_time_| to a reasonable value.
469 mark_child_process_activity_time(); 471 mark_child_process_activity_time();
470 472
471 if (!GetBrowserContext()->IsOffTheRecord() && 473 if (!GetBrowserContext()->IsOffTheRecord() &&
472 !base::CommandLine::ForCurrentProcess()->HasSwitch( 474 !base::CommandLine::ForCurrentProcess()->HasSwitch(
473 switches::kDisableGpuShaderDiskCache)) { 475 switches::kDisableGpuShaderDiskCache)) {
474 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 476 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
475 base::Bind(&CacheShaderInfo, GetID(), 477 base::Bind(&CacheShaderInfo, GetID(),
476 storage_partition_impl_->GetPath())); 478 storage_partition_impl_->GetPath()));
477 } 479 }
480 subscribe_uniform_enabled_ =
481 base::CommandLine::ForCurrentProcess()->HasSwitch(
482 switches::kEnableSubscribeUniformExtension);
478 483
479 // Note: When we create the RenderProcessHostImpl, it's technically 484 // Note: When we create the RenderProcessHostImpl, it's technically
480 // backgrounded, because it has no visible listeners. But the process 485 // backgrounded, because it has no visible listeners. But the process
481 // doesn't actually exist yet, so we'll Background it later, after 486 // doesn't actually exist yet, so we'll Background it later, after
482 // creation. 487 // creation.
483 } 488 }
484 489
485 // static 490 // static
486 void RenderProcessHostImpl::ShutDownInProcessRenderer() { 491 void RenderProcessHostImpl::ShutDownInProcessRenderer() {
487 DCHECK(g_run_renderer_in_process_); 492 DCHECK(g_run_renderer_in_process_);
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 ServiceRegistry* RenderProcessHostImpl::GetServiceRegistry() { 926 ServiceRegistry* RenderProcessHostImpl::GetServiceRegistry() {
922 DCHECK(mojo_application_host_); 927 DCHECK(mojo_application_host_);
923 return mojo_application_host_->service_registry(); 928 return mojo_application_host_->service_registry();
924 } 929 }
925 930
926 const base::TimeTicks& RenderProcessHostImpl::GetInitTimeForNavigationMetrics() 931 const base::TimeTicks& RenderProcessHostImpl::GetInitTimeForNavigationMetrics()
927 const { 932 const {
928 return init_time_; 933 return init_time_;
929 } 934 }
930 935
936 bool RenderProcessHostImpl::SubscribeUniformEnabled() const {
937 return subscribe_uniform_enabled_;
938 }
939
940 void RenderProcessHostImpl::OnAddSubscription(unsigned int target) {
941 DCHECK(subscribe_uniform_enabled_);
942 subscription_set_.insert(target);
943 const gpu::ValueState* state = pending_valuebuffer_state_->GetState(target);
944 if (state) {
945 SendUpdateValueState(target, *state);
946 }
947 }
948
949 void RenderProcessHostImpl::OnRemoveSubscription(unsigned int target) {
950 DCHECK(subscribe_uniform_enabled_);
951 subscription_set_.erase(target);
952 }
953
954 void RenderProcessHostImpl::SendUpdateValueState(unsigned int target,
955 const gpu::ValueState& state) {
956 DCHECK(subscribe_uniform_enabled_);
957 if (subscription_set_.find(target) != subscription_set_.end()) {
958 GpuProcessHost::SendOnIO(
959 GpuProcessHost::GPU_PROCESS_KIND_SANDBOXED,
960 CAUSE_FOR_GPU_LAUNCH_NO_LAUNCH,
961 new GpuMsg_UpdateValueState(id_, target, state));
962 } else {
963 // Store the ValueState locally in case a Valuebuffer subscribes to it later
964 pending_valuebuffer_state_->UpdateState(target, state);
965 }
966 }
967
931 void RenderProcessHostImpl::AddRoute( 968 void RenderProcessHostImpl::AddRoute(
932 int32 routing_id, 969 int32 routing_id,
933 IPC::Listener* listener) { 970 IPC::Listener* listener) {
934 CHECK(!listeners_.Lookup(routing_id)) 971 CHECK(!listeners_.Lookup(routing_id))
935 << "Found Routing ID Conflict: " << routing_id; 972 << "Found Routing ID Conflict: " << routing_id;
936 listeners_.AddWithID(listener, routing_id); 973 listeners_.AddWithID(listener, routing_id);
937 } 974 }
938 975
939 void RenderProcessHostImpl::RemoveRoute(int32 routing_id) { 976 void RenderProcessHostImpl::RemoveRoute(int32 routing_id) {
940 DCHECK(listeners_.Lookup(routing_id) != NULL); 977 DCHECK(listeners_.Lookup(routing_id) != NULL);
(...skipping 1372 matching lines...) Expand 10 before | Expand all | Expand 10 after
2313 2350
2314 void RenderProcessHostImpl::DecrementWorkerRefCount() { 2351 void RenderProcessHostImpl::DecrementWorkerRefCount() {
2315 DCHECK_CURRENTLY_ON(BrowserThread::UI); 2352 DCHECK_CURRENTLY_ON(BrowserThread::UI);
2316 DCHECK_GT(worker_ref_count_, 0); 2353 DCHECK_GT(worker_ref_count_, 0);
2317 --worker_ref_count_; 2354 --worker_ref_count_;
2318 if (worker_ref_count_ == 0) 2355 if (worker_ref_count_ == 0)
2319 Cleanup(); 2356 Cleanup();
2320 } 2357 }
2321 2358
2322 } // namespace content 2359 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_process_host_impl.h ('k') | content/browser/renderer_host/render_widget_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698