blob: 97c0743fdff101340f2952af915f13e64012afd9 [file] [log] [blame]
// Copyright (c) 2012 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 "base/basictypes.h"
#include "base/process/process.h"
#include "content/common/content_export.h"
#include "gpu/command_buffer/service/memory_tracking.h"
namespace content {
class GpuMemoryManager;
// All decoders in a context group point to a single GpuMemoryTrackingGroup,
// which tracks GPU resource consumption for the entire context group.
class CONTENT_EXPORT GpuMemoryTrackingGroup {
void TrackMemoryAllocatedChange(
uint64 old_size,
uint64 new_size,
gpu::gles2::MemoryTracker::Pool tracking_pool);
bool EnsureGPUMemoryAvailable(uint64 size_needed);
base::ProcessId GetPid() const {
return pid_;
uint64 GetSize() const {
return size_;
gpu::gles2::MemoryTracker* GetMemoryTracker() const {
return memory_tracker_;
friend class GpuMemoryManager;
GpuMemoryTrackingGroup(base::ProcessId pid,
gpu::gles2::MemoryTracker* memory_tracker,
GpuMemoryManager* memory_manager);
base::ProcessId pid_;
uint64 size_;
// Set and used only during the Manage function, to determine which
// non-surface clients should be hibernated.
bool hibernated_;
gpu::gles2::MemoryTracker* memory_tracker_;
GpuMemoryManager* memory_manager_;
} // namespace content