blob: 5e8bb0c7a7a701a09831740d97dac7502d0e0cfb [file] [log] [blame]
Romain Guye2d345e2010-09-24 18:39:22 -07001/*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Romain Guy5b3b3522010-10-27 18:57:51 -070017#ifndef ANDROID_HWUI_FBO_CACHE_H
18#define ANDROID_HWUI_FBO_CACHE_H
Romain Guye2d345e2010-09-24 18:39:22 -070019
20#include <GLES2/gl2.h>
21
22#include <utils/SortedVector.h>
23
Romain Guye2d345e2010-09-24 18:39:22 -070024namespace android {
25namespace uirenderer {
26
27///////////////////////////////////////////////////////////////////////////////
28// Cache
29///////////////////////////////////////////////////////////////////////////////
30
31class FboCache {
32public:
33 FboCache();
34 ~FboCache();
35
36 /**
37 * Returns an FBO from the cache. If no FBO is available, a new one
38 * is created. If creating a new FBO fails, 0 is returned.
39 *
40 * When an FBO is obtained from the cache, it is removed and the
41 * total number of FBOs available in the cache decreases.
42 *
43 * @return The name of the FBO, or 0 if no FBO can be obtained.
44 */
45 GLuint get();
46
47 /**
48 * Adds the specified FBO to the cache.
49 *
50 * @param fbo The FBO to add to the cache.
51 *
52 * @return True if the FBO was added, false otherwise.
53 */
54 bool put(GLuint fbo);
55
56 /**
57 * Clears the cache. This causes all FBOs to be deleted.
58 */
59 void clear();
60
61 /**
62 * Returns the current size of the cache.
63 */
64 uint32_t getSize();
65
66 /**
67 * Returns the maximum number of FBOs that the cache can hold.
68 */
69 uint32_t getMaxSize();
70
71private:
72 SortedVector<GLuint> mCache;
73 uint32_t mMaxSize;
John Reck1bcacfd2017-11-03 10:12:19 -070074}; // class FboCache
Romain Guye2d345e2010-09-24 18:39:22 -070075
John Reck1bcacfd2017-11-03 10:12:19 -070076}; // namespace uirenderer
77}; // namespace android
Romain Guye2d345e2010-09-24 18:39:22 -070078
John Reck1bcacfd2017-11-03 10:12:19 -070079#endif // ANDROID_HWUI_FBO_CACHE_H