| // Copyright (c) 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/gl/dual_gpu_state.h" |
| |
| #include "base/containers/flat_set.h" |
| #include "base/trace_event/trace_event.h" |
| |
| namespace gl { |
| |
| class GLContext; |
| |
| DualGPUState::DualGPUState() {} |
| |
| DualGPUState::~DualGPUState() {} |
| |
| void DualGPUState::RegisterHighPerformanceContext(GLContext* context) { |
| if (contexts_.contains(context)) |
| return; |
| |
| CancelDelayedSwitchToLowPowerGPU(); |
| contexts_.insert(context); |
| SwitchToHighPerformanceGPUIfNeeded(); |
| } |
| |
| void DualGPUState::RemoveHighPerformanceContext(GLContext* context) { |
| if (!contexts_.contains(context)) |
| return; |
| |
| contexts_.erase(context); |
| if (contexts_.empty()) |
| AttemptSwitchToLowPowerGPUWithDelay(); |
| } |
| |
| } // namespace gl |