rsFBOCache.h revision 8e90f2bc1fa35a2dc7bd2aab8b8241b628800218
18e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk/*
28e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project
38e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk *
48e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License");
58e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk * you may not use this file except in compliance with the License.
68e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk * You may obtain a copy of the License at
78e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk *
88e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk *      http://www.apache.org/licenses/LICENSE-2.0
98e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk *
108e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk * Unless required by applicable law or agreed to in writing, software
118e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS,
128e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk * See the License for the specific language governing permissions and
148e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk * limitations under the License.
158e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk */
168e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
178e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk#ifndef ANDROID_FRAME_BUFFER_OBJECT_CACHE_H
188e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk#define ANDROID_FRAME_BUFFER_OBJECT_CACHE_H
198e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
208e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk#include "rsObjectBase.h"
218e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
228e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk// ---------------------------------------------------------------------------
238e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouknamespace android {
248e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouknamespace renderscript {
258e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
268e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchoukclass Allocation;
278e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
288e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchoukclass FBOCache {
298e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchoukpublic:
308e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    FBOCache();
318e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    ~FBOCache();
328e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
338e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    void bindColorTarget(Context *rsc, Allocation *a, uint32_t slot);
348e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    void bindDepthTarget(Context *, Allocation *a);
358e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    void resetAll(Context *);
368e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
378e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    void setupGL2(Context *);
388e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
398e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchoukprotected:
408e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
418e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    bool mDirty;
428e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    uint32_t mMaxTargets;
438e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    void checkError(Context *);
448e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    void setColorAttachment(Context *rsc);
458e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    void setDepthAttachment(Context *rsc);
468e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    bool renderToFramebuffer();
478e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    ObjectBaseRef<Allocation> *mColorTargets;
488e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    ObjectBaseRef<Allocation> mDepthTarget;
498e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
508e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk    uint32_t mFBOId;
518e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
528e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk};
538e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
548e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk} // renderscript
558e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk} // android
568e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk
578e90f2bc1fa35a2dc7bd2aab8b8241b628800218Alex Sakhartchouk#endif //ANDROID_FRAME_BUFFER_OBJECT_CACHE_H
58