Index: content/common/gpu/gpu_channel.cc |
diff --git a/content/common/gpu/gpu_channel.cc b/content/common/gpu/gpu_channel.cc |
index 275d7cb0a320e69a9e53b158d01a30703c4ed89d..0779f388ef2a56ee92d2311c2b0218a64436ea60 100644 |
--- a/content/common/gpu/gpu_channel.cc |
+++ b/content/common/gpu/gpu_channel.cc |
@@ -222,6 +222,7 @@ GpuChannelMessageFilter::GpuChannelMessageFilter( |
GpuChannelMessageQueue* message_queue, |
gpu::SyncPointManager* sync_point_manager, |
base::SingleThreadTaskRunner* task_runner, |
+ gpu::PreemptionFlag* preempting_flag, |
bool future_sync_points) |
: preemption_state_(IDLE), |
gpu_channel_(gpu_channel), |
@@ -230,6 +231,7 @@ GpuChannelMessageFilter::GpuChannelMessageFilter( |
peer_pid_(base::kNullProcessId), |
sync_point_manager_(sync_point_manager), |
task_runner_(task_runner), |
+ preempting_flag_(preempting_flag), |
a_stub_is_descheduled_(false), |
future_sync_points_(future_sync_points) {} |
@@ -368,13 +370,6 @@ void GpuChannelMessageFilter::OnMessageProcessed() { |
UpdatePreemptionState(); |
} |
-void GpuChannelMessageFilter::SetPreemptingFlagAndSchedulingState( |
- gpu::PreemptionFlag* preempting_flag, |
- bool a_stub_is_descheduled) { |
- preempting_flag_ = preempting_flag; |
- a_stub_is_descheduled_ = a_stub_is_descheduled; |
-} |
- |
void GpuChannelMessageFilter::UpdateStubSchedulingState( |
bool a_stub_is_descheduled) { |
a_stub_is_descheduled_ = a_stub_is_descheduled; |
@@ -549,27 +544,25 @@ GpuChannel::GpuChannel(GpuChannelManager* gpu_channel_manager, |
GpuWatchdog* watchdog, |
gfx::GLShareGroup* share_group, |
gpu::gles2::MailboxManager* mailbox, |
+ gpu::PreemptionFlag* preempting_flag, |
base::SingleThreadTaskRunner* task_runner, |
base::SingleThreadTaskRunner* io_task_runner, |
int client_id, |
uint64_t client_tracing_id, |
- bool software, |
bool allow_future_sync_points, |
bool allow_real_time_streams) |
: gpu_channel_manager_(gpu_channel_manager), |
channel_id_(IPC::Channel::GenerateVerifiedChannelID("gpu")), |
+ preempting_flag_(preempting_flag), |
client_id_(client_id), |
client_tracing_id_(client_tracing_id), |
task_runner_(task_runner), |
io_task_runner_(io_task_runner), |
- share_group_(share_group ? share_group : new gfx::GLShareGroup), |
- mailbox_manager_(mailbox |
- ? scoped_refptr<gpu::gles2::MailboxManager>(mailbox) |
- : gpu::gles2::MailboxManager::Create()), |
+ share_group_(share_group), |
+ mailbox_manager_(mailbox), |
subscription_ref_set_(new gpu::gles2::SubscriptionRefSet), |
pending_valuebuffer_state_(new gpu::ValueStateMap), |
watchdog_(watchdog), |
- software_(software), |
num_stubs_descheduled_(0), |
allow_future_sync_points_(allow_future_sync_points), |
allow_real_time_streams_(allow_real_time_streams), |
@@ -583,7 +576,7 @@ GpuChannel::GpuChannel(GpuChannelManager* gpu_channel_manager, |
filter_ = new GpuChannelMessageFilter( |
weak_factory_.GetWeakPtr(), message_queue_.get(), |
gpu_channel_manager_->sync_point_manager(), task_runner_.get(), |
- allow_future_sync_points_); |
+ preempting_flag, allow_future_sync_points_); |
subscription_ref_set_->AddObserver(this); |
} |
@@ -694,13 +687,10 @@ void GpuChannel::OnStubSchedulingChanged(GpuCommandBufferStub* stub, |
CreateCommandBufferResult GpuChannel::CreateViewCommandBuffer( |
const gfx::GLSurfaceHandle& window, |
- int32 surface_id, |
const GPUCreateCommandBufferConfig& init_params, |
int32 route_id) { |
- TRACE_EVENT1("gpu", |
- "GpuChannel::CreateViewCommandBuffer", |
- "surface_id", |
- surface_id); |
+ TRACE_EVENT1("gpu", "GpuChannel::CreateViewCommandBuffer", "route_id", |
+ route_id); |
int32 share_group_id = init_params.share_group_id; |
GpuCommandBufferStub* share_group = stubs_.get(share_group_id); |
@@ -725,12 +715,13 @@ CreateCommandBufferResult GpuChannel::CreateViewCommandBuffer( |
return CREATE_COMMAND_BUFFER_FAILED; |
} |
+ bool offscreen = false; |
scoped_ptr<GpuCommandBufferStub> stub(new GpuCommandBufferStub( |
this, task_runner_.get(), share_group, window, mailbox_manager_.get(), |
subscription_ref_set_.get(), pending_valuebuffer_state_.get(), |
gfx::Size(), disallowed_features_, init_params.attribs, |
- init_params.gpu_preference, stream_id, route_id, surface_id, watchdog_, |
- software_, init_params.active_url)); |
+ init_params.gpu_preference, stream_id, route_id, offscreen, watchdog_, |
+ init_params.active_url)); |
if (preempted_flag_.get()) |
stub->SetPreemptByFlag(preempted_flag_); |
no sievers
2015/09/23 21:53:21
Can you remove this method from GpuCommandBufferSt
piman
2015/09/23 23:33:37
Done.
|
@@ -774,24 +765,10 @@ void GpuChannel::RemoveRoute(int32 route_id) { |
router_.RemoveRoute(route_id); |
} |
-gpu::PreemptionFlag* GpuChannel::GetPreemptionFlag() { |
- if (!preempting_flag_.get()) { |
- preempting_flag_ = new gpu::PreemptionFlag; |
- io_task_runner_->PostTask( |
- FROM_HERE, |
- base::Bind( |
- &GpuChannelMessageFilter::SetPreemptingFlagAndSchedulingState, |
- filter_, preempting_flag_, num_stubs_descheduled_ > 0)); |
- } |
- return preempting_flag_.get(); |
-} |
- |
void GpuChannel::SetPreemptByFlag( |
scoped_refptr<gpu::PreemptionFlag> preempted_flag) { |
+ DCHECK(stubs_.empty()); |
preempted_flag_ = preempted_flag; |
- |
- for (auto& kv : stubs_) |
- kv.second->SetPreemptByFlag(preempted_flag_); |
} |
void GpuChannel::OnDestroy() { |
@@ -959,12 +936,13 @@ void GpuChannel::OnCreateOffscreenCommandBuffer( |
return; |
} |
+ bool offscreen = true; |
scoped_ptr<GpuCommandBufferStub> stub(new GpuCommandBufferStub( |
this, task_runner_.get(), share_group, gfx::GLSurfaceHandle(), |
mailbox_manager_.get(), subscription_ref_set_.get(), |
pending_valuebuffer_state_.get(), size, disallowed_features_, |
init_params.attribs, init_params.gpu_preference, init_params.stream_id, |
- route_id, 0, watchdog_, software_, init_params.active_url)); |
+ route_id, offscreen, watchdog_, init_params.active_url)); |
if (preempted_flag_.get()) |
stub->SetPreemptByFlag(preempted_flag_); |