12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/common/gpu/gpu_memory_tracking.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/common/gpu/gpu_memory_manager.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content {
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)GpuMemoryTrackingGroup::GpuMemoryTrackingGroup(
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    base::ProcessId pid,
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    gpu::gles2::MemoryTracker* memory_tracker,
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    GpuMemoryManager* memory_manager)
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    : pid_(pid),
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      size_(0),
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      hibernated_(false),
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      memory_tracker_(memory_tracker),
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      memory_manager_(memory_manager) {
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)GpuMemoryTrackingGroup::~GpuMemoryTrackingGroup() {
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  memory_manager_->OnDestroyTrackingGroup(this);
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GpuMemoryTrackingGroup::TrackMemoryAllocatedChange(
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    uint64 old_size,
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    uint64 new_size,
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    gpu::gles2::MemoryTracker::Pool tracking_pool) {
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  memory_manager_->TrackMemoryAllocatedChange(
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      this, old_size, new_size, tracking_pool);
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool GpuMemoryTrackingGroup::EnsureGPUMemoryAvailable(uint64 size_needed) {
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return memory_manager_->EnsureGPUMemoryAvailable(size_needed);
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace content
40