summaryrefslogtreecommitdiffstats
path: root/cc/managed_memory_policy.h
blob: b8c1b3fb83b4dbbac11ec31a96f07b11c35f5afb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Copyright 2011 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.

#ifndef CC_MANAGED_MEMORY_POLICY_H_
#define CC_MANAGED_MEMORY_POLICY_H_

#include "base/basictypes.h"
#include "cc/base/cc_export.h"
#include "cc/tile_priority.h"

namespace cc {

struct CC_EXPORT ManagedMemoryPolicy {
     enum PriorityCutoff {
        CUTOFF_ALLOW_NOTHING,
        CUTOFF_ALLOW_REQUIRED_ONLY,
        CUTOFF_ALLOW_NICE_TO_HAVE,
        CUTOFF_ALLOW_EVERYTHING,
    };

    ManagedMemoryPolicy(size_t bytesLimitWhenVisible);
    ManagedMemoryPolicy(size_t bytesLimitWhenVisible,
                        PriorityCutoff priorityCutoffWhenVisible,
                        size_t bytesLimitWhenNotVisible,
                        PriorityCutoff priorityCutoffWhenNotVisible);
    bool operator==(const ManagedMemoryPolicy&) const;
    bool operator!=(const ManagedMemoryPolicy&) const;

    size_t bytesLimitWhenVisible;
    PriorityCutoff priorityCutoffWhenVisible;
    size_t bytesLimitWhenNotVisible;
    PriorityCutoff priorityCutoffWhenNotVisible;

    static int priorityCutoffToValue(PriorityCutoff priorityCutoff);
    static TileMemoryLimitPolicy priorityCutoffToTileMemoryLimitPolicy(PriorityCutoff priorityCutoff);
};

}  // namespace cc

#endif  // CC_MANAGED_MEMORY_POLICY_H_