rsFBOCache.h revision c19ff0177a7a0dadfc01b1990f822354fdc95991
17d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk/*
27d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * Copyright (C) 2011 The Android Open Source Project
37d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk *
47d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License");
57d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * you may not use this file except in compliance with the License.
67d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * You may obtain a copy of the License at
77d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk *
87d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk *      http://www.apache.org/licenses/LICENSE-2.0
97d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk *
107d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * Unless required by applicable law or agreed to in writing, software
117d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS,
127d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * See the License for the specific language governing permissions and
147d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk * limitations under the License.
157d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk */
167d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
177d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk#ifndef ANDROID_FRAME_BUFFER_OBJECT_CACHE_H
187d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk#define ANDROID_FRAME_BUFFER_OBJECT_CACHE_H
197d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
207d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk#include "rsObjectBase.h"
217d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
227d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk// ---------------------------------------------------------------------------
237d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouknamespace android {
247d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouknamespace renderscript {
257d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
267d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchoukclass Allocation;
277d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
287d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchoukclass FBOCache {
297d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchoukpublic:
307d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    FBOCache();
317d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    ~FBOCache();
327d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
337d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    void bindColorTarget(Context *rsc, Allocation *a, uint32_t slot);
347d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    void bindDepthTarget(Context *, Allocation *a);
357d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    void resetAll(Context *);
367d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
37c19ff0177a7a0dadfc01b1990f822354fdc95991Alex Sakhartchouk    void setup(Context *);
387d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
397d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchoukprotected:
407d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
417d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    bool mDirty;
427d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    uint32_t mMaxTargets;
437d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    void checkError(Context *);
447d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    void setColorAttachment(Context *rsc);
457d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    void setDepthAttachment(Context *rsc);
467d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    bool renderToFramebuffer();
477d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    ObjectBaseRef<Allocation> *mColorTargets;
487d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    ObjectBaseRef<Allocation> mDepthTarget;
497d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
507d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk    uint32_t mFBOId;
517d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
527d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk};
537d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
547d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk} // renderscript
557d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk} // android
567d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk
577d9c5ffccb7a5e682860f752403e5a03aed587beAlex Sakhartchouk#endif //ANDROID_FRAME_BUFFER_OBJECT_CACHE_H
58